【问题标题】:Venn diagram proportional and color shading with semi-transparency半透明的维恩图比例和颜色阴影
【发布时间】:2012-02-01 14:16:17
【问题描述】:

我有以下类型的计数数据。

A   450
B   1800
A and B both    230

我想开发一个彩色的(可能在交叉路口半透明),如下面的维恩图。

注意:此图为 PowerPoint 中的手绘示例,未按比例绘制。

【问题讨论】:

  • 为什么不从library("sos"); findFn("venn") 开始,看看能走多远?
  • 或者使用 venneuler 包就可以了

标签: r plot venn-diagram


【解决方案1】:

这是一篇讨论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)

如需更高级和定制的解决方案,请查看包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")

【讨论】:

  • @John:好的形式是先仔细阅读 VennDiagram 和 venneuler 的帮助文件,然后再询问格式或其他选项。
  • @John 虽然venneuler 没有“边框”参数,但您可以根据venneuler 对象的值(您有中心和直径)绘制圆边境。我怀疑这在函数中也不难实现。
  • 包是否对数据应用任何逻辑?我给了它:v &lt;- venneuler(c(A=100, B=100, "A&amp;B"=50, C=100, "A&amp;C"=25)),它生成了一个图表,其中包含 B 和 C 之间的一个小交叉点。
  • 尝试:v &lt;- venneuler(c(A=450, B=1800, "A&amp;B"=425)) plot(v) 并注意重叠甚至不接近正确。 'A' 应该几乎完全被 B 覆盖。我对这个包非常怀疑。
  • 您可能对此感兴趣,关于 venneuler:benfred.github.io/venn.js/tests/venneuler_comparison
【解决方案2】:

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

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

或者你可以在eulerr.co尝试同样的r包的闪亮应用程序

【讨论】:

  • 闪亮的动画应用为我敲定了交易
  • 优秀的包装。小缺陷恕我直言,默认配色方案是使用白色作为第一组和背景,因此缺乏对比度。此外,提供的 code-sn-p 与最近的 R/package 版本的结果不同。
  • 谢谢。我更新了 code-sn-p 及其生成的图形。关于配色方案,我不同意你的看法。与背景的对比通常不是主要关注点,白色与大多数其他颜色,尤其是圆圈上的标签形成鲜明对比。
  • 正是我想要的!你能告诉我怎么做A&BnotC吗?
  • 我对默认的“数量”标签感到惊讶/困惑。我希望每个计数标签都显示该区域的数量而不是总数,这样如果您将所有显示的数字相加,您就会得到总 N。在您的示例中,A 是 5,但 A-only 是 3。A&B 是2 但 A&BnotC 是 1.5。 B 为 3,但 B-only 为 1。在这方面,区域区域似乎也不与其数量成正比。
【解决方案3】:

根据 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" is not a graphical parameter 这是 vennDiagram 版本的问题吗?在这种情况下,您是否正确“填写”?非常感谢
  • @PGreen 我刚刚在 R 2.15.2 中尝试过,最新版本的 vennDiagram 对我有用 ....
  • @PGreen 我怀疑问题是您使用的是 limma 包中的 vennDiagram,而 jon 使用的是 vennDiagram 包中的 venn.diagram。 vennDiagram 没有填充参数,这就是您收到错误的原因。
  • 是否可以将venn.diagram打印到默认的R图形设备而不是导出到tiff(用于rmarkdown文档)?
  • @rmf 要在 R 图形设备上绘图,请执行 vennPlot = venn.diagram(..., filename=NULL); grid.newpage(); grid.draw(vennPlot)
【解决方案4】:

即使这并不能完全回答您的问题。我认为这对其他想要绘制维恩图的人很有用。 可以使用 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 添加颜色和透明度。

【讨论】:

  • 嗨!你介意用illustrator详细说明你的意思吗?您是说 Adob​​e Illustrator,还是有办法仅使用 R 来实现上图?
  • 对不起,我的错!我的意思是使用 Adob​​e Illustrator
【解决方案5】:

有一个直观且灵活的比例绘图仪,您可以下载并运行。在以下位置找到它: http://omics.pnl.gov/software/VennDiagramPlotter.php

jvenn:交互式维恩图查看器 - GenoToul Bioinfo:http://bioinfo.genotoul.fr/jvenn/

【讨论】:

    【解决方案6】:

    我知道 OP 询问 R 中的解决方案,但我想指出一个名为 BioVenn 的基于 Web 的解决方案。它最多需要 3 个元素列表并绘制维恩图,以便每个表面与元素的数量成正比 - 就像这样:

    在此图中,我手动(通过 PhotoShop)更改了数字的位置,因为我不喜欢 BioVenn 选择的位置。但您可以选择不使用数字。

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

    【讨论】:

    • “在这个图表中,我已经手动(通过 PhotoShop)更改了数字的位置,因为我不喜欢 BioVenn 选择的位置。但是你可以选择没有数字。”实际上,在 BioVenn 中,您只需将数字拖放到您想要的任何地方。不需要 PhotoShop :-)
    【解决方案7】:

    FWIW:找到 this 用于执行相同操作的 python 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2017-03-09
      • 1970-01-01
      相关资源
      最近更新 更多