【问题标题】:Venn diagram for non-numeric entries to be shown in subsets要在子集中显示的非数字条目的维恩图
【发布时间】:2019-01-25 10:34:45
【问题描述】:

我有以下数据框:

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

我想制作一个维恩图,所有这些“parX”元素都显示在各自的子集中,即作为标签,而不仅仅是重叠元素的数量。 哪个 R 包支持它?

【问题讨论】:

  • cran vennDiagram 包
  • 我已经研究过了,但是手册/包是如何不写的一个例子。

标签: r dataframe plot venn-diagram


【解决方案1】:

关于here 的最佳答案,您必须手动添加标签(使用 VennDiagram),当您有两个圆圈时,这很容易,但是如果您有三个或更多,整个东西就会变得更加复杂

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)

【讨论】:

  • 谢谢,这就是我要找的!
  • 顺便说一句,如果我有很多元素,就像在大多数现实生活中的应用程序中一样,表示方式就不太理想 - 有没有办法将所有元素放入它们所属的子集中?
  • 实际上上例中使用的分隔符是换行符,所以我们有圈圈。我认为进行这种可视化的更好方法是ggplot。很好描述here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多