Diagramme de Venn avec R
L'essentiel de cette page !
Diagrammes d'Euler, de Venn et de Carroll peuvent être réalisés avec R grâce à la librairie VennDiagram.
Le tracé le plus classique (à 3 cercles)) se fait avec la commande draw.triple.venn().
A- Tracer un diagramme de Venn basic
1. D'abord, il faut installer la librairie VennDiagram
install.packages("VennDiagram")
library("VennDiagram")
2. Tracer un diagramme simple à 2 ou 3 cercles
Tracer un diagramme à 2 cercles
# commande draw.pairwise.venn
draw.pairwise.venn(100, 70, 30, c("First", "Second"),col=c("green","red"),scaled=F)
Scaled = F ou T permet de moduler la taille des cercles pour avoir des cercles de tailles identiques ou proportionnelles.
Tracer un diagramme à 3 cercles
# commande draw.triple.venn
draw.triple.venn(area1 = 65,area2 = 75,area3 = 85,n12 = 35,n23 = 15,n13 = 25,n123 = 5)
draw.triple.venn(area1 = 65,area2 = 75,area3 = 85,n12 = 35,n23 = 15,n13 = 25,n123 = 5,category = c("Qualité", "Sécurité", "Environnement"))
draw.triple.venn(area1 = 65,area2 = 75,area3 = 85,n12 = 35,n23 = 15,n13 = 25,n123 = 5,fill = c("orange", "red", "green"),lty = "blank")
draw.triple.venn(area1 = 65,area2 = 75,area3 = 85,n12 = 35,n23 = 15,n13 = 25,n123 = 5,fill = c("orange", "red", "green"))
Liens externes pour aller plus loin (4 cercles ou plus) :
B- Tracer un diagramme plus élaboré
install.packages("eulerr")
library("eulerr")
vd2 <- euler(c("Mat"=30,"Op"=40,"App"=45,
"Mat&Op"=50,"Mat&App"=40,"Op&App"=35,
"Mat&Op&App"=20))
plot(vd2, key = TRUE, counts = TRUE,quantities = TRUE,fills=c("red","blue","green"))
Calculer automatiquement les interactions entre les différents vecteurs pour construire un diagramme de Venn
vd <- euler(c("monA"=length(setdiff(A,union(B,C))),
"monB"=length(setdiff(B,union(A,C))),
"monC"=length(setdiff(C,union(A,C))),
"monA&monB"=length(intersect(A,B))-length(intersect(intersect(A,B), C)),
"monA&monC"=length(intersect(A,C))-length(intersect(intersect(A,B), C)),
"monB&monC"=length(intersect(B,C))-length(intersect(intersect(A,B), C)),
"monA&monB&monC"=length(intersect(intersect(A,B), C))
))
plot(vd, key = TRUE, counts = TRUE,quantities = TRUE, fills=c("yellow","orange","red"))