library(learnr) knitr::opts_chunk$set(echo = FALSE) library(ggvenn) library(ggplot2) library(UpSetR) data("fruits", package = "tidyViz") lesFruits <- make.unique(fruits$nom) vitC <- lesFruits[fruits$VitamineC > 10] vitE <- lesFruits[fruits$VitamineE > 1] vitList <- list(vitC = vitC, vitE = vitE) theme_set(theme_bw()) dat01 <- data.frame(vitC = fruits$VitamineC > 10, vitE = fruits$VitamineE > 1) + 0
Les diagrammes de Venn permettent de représenter des liens entre ensembles d'objets : combien d'objets sont communs à plusieurs ensembles, et combien sont spécifiques d'un seul ensemble.
Pour les besoins de ce tutoriel, j'ai créé deux ensembles :
Prenez-un moment pour lire ce code et le comprendre.
lesFruits <- make.unique(fruits$nom) vitC <- lesFruits[fruits$VitamineC > 10] vitE <- lesFruits[fruits$VitamineE > 1] vitList <- list(vitC = vitC, vitE = vitE)
La fonction ggvenn
du package ggvenn
vous permettra de générer un diagramme de Venn entre au plus 5 ensembles. Modifiez les couleurs !
ggvenn(vitList)
ggvenn(vitList, fill_color = c("orange", "limegreen"))
Les auteurs de la publications UpSet: Visualization of Intersecting Sets sont partis du constat qu'à partir de 4 ou 5 ensembles différents, le diagramme de Venn atteint ses limites. Ils ont proposé un visualisation à base de diagrammes en bâtons de points qui permettent de représenter l'information complexe de ce qui est partagé ou pas entre plusieurs groupes. Cette nouvelle représentation, appelée UpSet
, est implémentée en R dans la librairie UpSetR
et sa fonction principale upset
.
Ce n'est pas forcément évident au premier regard : la fonction upset
n'accepte pas les mêmes types d'argument en entrée que la fonction venn.diagram
. La fonction upset
souhaite en effet comme argument principal avoir une matrice de 0s et de 1s avec
Qu'est-ce que cela signifie pour notre exemple ?
J'ai créé pour vous cette data-frame de zéros et de uns avec la commande suivante. Examinez cette commande pendant quelques instants.
dat01 <- data.frame( vitC = ifelse(fruits$VitamineC > 10, 1, 0), vitE = ifelse(fruits$VitamineE > 1, 1, 0))
Pour générer un diagramme UpSet, utilisez ensuite la commande suivante. Puis modifiez la pour faire un joli graphe !
upset(dat01)
# C'est vraiment tout ce qu'on peut faire # avant de descendre dans des paramètres # vraiment très compliqués ! upset(data = dat01, order.by = "degree", sets.bar.color = "steelblue")
Rassurez-vous tout de même, il existe dans le package UpSetR
une fonction qui permet automatiquement de passer une liste à upset
: la fonction fromList
.
Par exemple, exécutez le code suivant : ouf, on n'a pas besoin de faire de gymnastique compliquée pour transformer nos données après tout !
upset(fromList(vitList))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.