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"))

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"))