我有以下类型的计数数据。
A 450
B 1800
A and B both 230
我想开发一个像下面这个 Venn 图表一样有色彩(可能在交叉点处半透明)的东西。
注意:这张图是用 PowerPoint 手绘的样例,并不按比例缩放。
我有以下类型的计数数据。
A 450
B 1800
A and B both 230
我想开发一个像下面这个 Venn 图表一样有色彩(可能在交叉点处半透明)的东西。
注意:这张图是用 PowerPoint 手绘的样例,并不按比例缩放。
这篇文章讨论了如何从集群列表和共现因素生成维恩图。
要轻松解决问题,请使用软件包venneuler:
require(venneuler)
v <- venneuler(c(A=450, B=1800, "A&B"=230))
plot(v)
若需更高级和定制化的解决方案,请查看包VennDiagram。
library(VennDiagram)
venn.diagram(list(B = 1:1800, A = 1571:2020), fill = c("lightblue", "green"),
alpha = c(0.5, 0.5), lwd =0, "venn_diagram.tiff")
v <- venneuler(c(A=100, B=100, "A&B"=50, C=100, "A&C"=25))
,它生成了一个图表,其中包括B和C之间的一个小交集。 - SabreWolfyv <- venneuler(c(A=450, B=1800, "A&B"=425))
,然后运行 plot(v)
并注意重叠部分与正确结果相差甚远。'A' 的几乎全部应被'B' 覆盖。我对这个包非常持怀疑态度。 - DunderChief基于Geek On Acid的第二个答案的第二个建议(再次感谢),我也能够解决线路问题。我发布这个,以便其他谷歌搜索者可以受益!
require(VennDiagram)
venn.diagram(list(B = 1:1800, A = 1571:2020),fill = c("red", "green"),
alpha = c(0.5, 0.5), cex = 2,cat.fontface = 4,lty =2, fontfamily =3,
filename = "trial2.emf");
vennDiagram(sub, cex=..,lwd=2,circle.col=...)
,但当我尝试按照您所提到的使用 fill
时,它会提示:1:“fill”不是图形参数
。 这是 vennDiagram 版本的问题吗?在这种情况下,您知道正确的“fill”是什么吗?非常感谢。 - PGreenvenn.diagram
打印到默认的 R 图形设备上,而不是导出为 tiff(用于 rmarkdown 文档)? - mindlessgreenvennPlot = venn.diagram(...,filename=NULL); grid.newpage(); grid.draw(vennPlot)
。 - Holger Brandl尽管这不完全回答了你的问题,但我认为这对于其他想绘制维恩图的人会有用。
可以使用gplots包中的venn()函数:
http://www.inside-r.org/packages/cran/gplots/docs/venn## modified slightly from the example given in the documentation
## Example using a list of item names belonging to the
## specified group.
##
require(gplots)
## construct some fake gene names..
oneName <- function() paste(sample(LETTERS,5,replace=TRUE),collapse="")
geneNames <- replicate(1000, oneName())
##
GroupA <- sample(geneNames, 400, replace=FALSE)
GroupB <- sample(geneNames, 750, replace=FALSE)
GroupC <- sample(geneNames, 250, replace=FALSE)
GroupD <- sample(geneNames, 300, replace=FALSE)
venn(list(GrpA=GroupA,GrpB=GroupB,GrpC=GroupC,GrpD=GroupD))
然后我使用illustrator添加颜色和透明度。
我知道提问者想要R语言的解决方案,但是我想指出一个基于Web的解决方案,叫做BioVenn。它可以处理3个元素列表,并绘制一个维恩图,使每个表面的大小与元素数量成比例 - 就像这个:
library("sos"); findFn("venn")
开始,看看能走多远? - Ben Bolker