I have the folowing dataframe:

SET1 SET2 SET3
par1 par2 par1
par2 par3 par2
par3 par4 par5
...  ...  ...

I would like to make a Venn diagram in that all those 'parX' elements are shown in respective subets i.e. as labels, not just the number of overlapping elements. Which R package supports that?

score:3

Accepted answer

Regarding the best answer from here you have to add labels manually (using VennDiagram), when you have two circles it's pretty easy, however if you have three or more, whole stuff becames more complex

library(VennDiagram)



SET1 <- c('a','b','c','d')
SET2 <- c('a','e','f','g')
SET3 <- c('a','w','x','f')



v <- venn.diagram(list(SET1 = SET1, SET2 = SET2, SET3 = SET3),
                  fill = c("red", "green","blue"),
                  alpha = c(0.5, 0.5, 0.5), cat.cex = 1.5, cex=1.5,
                  filename=NULL)
grid.newpage()
grid.draw(v)


v[[7]]$label  <- paste(setdiff(SET1, intersect(SET2,SET3)), collapse="\n") 
v[[8]]$label <- paste(setdiff(intersect(SET1,SET2),intersect(SET1, intersect(SET2,SET3))), collapse="\n")
v[[9]]$label <- paste(setdiff(SET2, intersect(SET1,SET3)), collapse="\n")
v[[10]]$label <- paste(setdiff(intersect(SET3,SET1),intersect(SET3, intersect(SET1,SET2))), collapse="\n")
v[[11]]$label <- paste(intersect(SET1, intersect(SET2,SET3)), collapse="\n")
v[[12]]$label <- paste(setdiff(intersect(SET2,SET3),intersect(SET2, intersect(SET1,SET3))), collapse="\n")
v[[13]]$label <- paste(setdiff(SET3, intersect(SET1,SET2)), collapse="\n")


grid.newpage()
grid.draw(v)

enter image description here