2012-01-03 64 views
46

我有以下类型的计数数据。维恩图比例和半透明的颜色阴影

A 450 
B 1800 
A and B both 230 

我想开发丰富多彩的(可能在交叉点半透明度)像下面维恩图。

enter image description here

注:这个数字是在PowerPoint中绘制一个例子的手,这是不按比例。

+0

拉升相同的R-包闪亮的应用为什么不'库( “SOS”)开始; findFn(“venn”)'看看你需要多长时间? – 2012-01-03 15:52:03

+0

或使用* venneuler *包装它 – 2012-01-03 17:30:44

回答

45

这是一篇文章,讨论Venn diagram from list of clusters and co-occurring factors

对于简单的解决方案使用的软件包venneuler

require(venneuler) 
v <- venneuler(c(A=450, B=1800, "A&B"=230)) 
plot(v) 

enter image description here

更先进的和定制的解决方案取包VennDiagram

+0

是否有可能以黑色显示装订线? thnaks的解决方案.. – jon 2012-01-03 17:19:43

+0

@约翰:良好的形式是第一次仔细阅读VennDiagram和venneuler的帮助文件,然后才询问格式或其他选项。 – 2012-01-03 17:23:38

+0

@John虽然'venneuler'没有“边界”参数,你可以根据'venneuler'对象的值(你有中心和直径)绘制圆圈,这将会产生一个边界。我怀疑这在功能上也不难实现。 – 2012-01-03 17:25:29

39

基于Geek On Acid第二个建议(再次感谢)的第二个答案,我也能够解决线路问题。如果这是与其他Google相关的相关信息,我会发布!

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

enter image description here

+0

嗨,我正在使用'vennDiagram(sub,cex = ..,lwd = 2, circle.col = ...)'当我按照你提到的方法尝试'fill'时,它会提示:1:''fill'不是图形参数'这是vennDiagram版本的问题吗?在这种情况下你有权利“填补”吗?非常感谢 – PGreen 2013-03-12 10:39:23

+0

@PGreen我刚刚在R 2.15.2中试用了最新版本的vennDiagram,适用于我...... – jon 2013-03-12 12:24:11

+3

@PGreen我怀疑问题在于您使用的是limma软件包中的vennDiagram,而jon使用的是venn。来自vennDiagram包的图表。 vennDiagram没有填充参数,这就是您遇到错误的原因。 – sage88 2013-08-18 06:55:35

11

尽管这并不完全回答你的问题。我认为这对其他希望绘制维恩图的人有用。 人们可以使用维恩()函数从gplots包: 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)) 

enter image description here 后来,我只需要添加使用Illustrator的颜色和透明度。 enter image description here

+1

嗨!您是否介意使用Illustrator来阐述您的意思?你的意思是Adobe Illustrator,还是有一种方法可以用R来实现上面的图表? – 2014-12-04 17:57:42

+1

对不起我的坏!我的意思是使用Adobe Illustrator – ktyagi 2015-02-18 16:34:57

3

我知道OP询问R中的解决方案,但我想指出一个名为BioVenn的基于Web的解决方案。它占用元件3所列出,并绘制的文氏图,使得每个表面成比例的元素数 - 像这样的:

enter image description here

在该图中我已经手动改变(通过PhotoShop中)的因为我不喜欢BioVenn选择的位置,因此放置了这些数字。但你可以选择不要有数字。

理论上与BioVenn一起使用的列表应该由基因ID组成,但实际上并不重要 - 列表只需包含字符串。

+2

“在这个图表中,我手动(通过PhotoShop)更改了数字的位置,因为我不喜欢BioVenn选择的位置,但是您可以选择不使用数字。”实际上,在BioVenn中,您可以将数字拖放到任何想要的位置。没有PhotoShop需要:-) – 2015-11-02 12:20:58

19

我最近发布了一个新的R程序包eulerr,它可以满足您的需求。它与venneuler非常相似,但没有不一致。

library(eulerr) 
fit <- euler(c(A = 450, B = 1800, "A&B" = 230)) 
plot(fit) 

eulerplot

或者你也可以在eulerr.co

shiny-euler

+0

动画闪亮的应用程序为我密封 – Megatron 2017-09-13 19:19:08

+1

优秀的软件包。小缺陷imho是默认的配色方案,它使用白色作为第一组和背景,因此缺乏对比度。 此外,所提供的代码片段与最近的R /软件包版本没有给出相同的结果。 – 2018-03-06 10:22:27

+0

谢谢。我更新了代码片段和它生成的数字。我会不同意你的配色方案。与背景的对比通常不是主要关注的问题,白色与大多数其他颜色(特别是圆圈上的标签)的对比度非常好。 – 2018-03-06 18:56:34