标签: venn-diagram

如何绘制三组比例维恩/欧拉图?

我有一组微阵列数据,我想根据附图(用PowerPoint完成)表示它。我尝试了R可用的各种软件包(VennDiagram,venneuler,limma)。但是,我无法按比例绘制数据或显示值。

有谁知道如何做?

可以玩的代码可以在下面找到!

谢谢!

# you might need these:
source("http://www.bioconductor.org/biocLite.R")
biocLite("limma")
library(VennDiagram)
library(limma)
library(venneuler)

# Trial 1: Kind of proportional but difficult to customize for labels and other stuff
su <- venneuler(c(A=162, B=104, C=86, "A&B"=206, "A&C"=112, "B&C"=90 ,"A&B&C"=2433))
plot(su)

# Trial 2: looks nice but not proportional
hw <- c(F,F,F,F,T,T,T,T)
hm <- c(F,F,T,T,F,F,T,T)
hr <- c(F,T,F,T,F,T,F,T)
c4 <- cbind(hw,hm,hr)
e <- vennCounts(c4)
e[1:8,4] <- c(3193,86,104,90,162,112,206,2433)
vennDiagram(e)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

plot r venn-diagram

5
推荐指数
1
解决办法
8386
查看次数

R:维恩图中颜色的重叠部分

我认为维恩图是比较数据的极有用的方法。问题在于,一旦我开始拥有多个(3个或更多)类,圆圈的大小就不再能够指示重叠的大小。

我想做的是通过重叠的大小而不是类标签的大小为维恩图中的每个字段着色:

例如,当我绘制普通的维恩图时:

require(VennDiagram)
# Make data
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)

v1 <- venn.diagram(list(A=GroupA, B=GroupB, C=GroupC, D=GroupD), filename=NULL, fill=rainbow(4))
grid.newpage()
grid.draw(v1)
Run Code Online (Sandbox Code Playgroud)

看起来像这样: 结果维恩图

最终的维恩图被分为15个单独的字段,每个字段都有自己的颜色和数字。每个单独字段的颜色由fill参数指示的类别/组的颜色确定。

我要做的是改为使用指示字段大小的颜色渐变为每个单独的字段上色,以便在视觉上易于发现最大/最小的组(类似于热图/水平图的着色方式)

有没有办法在R中做到这一点?

r data-visualization venn-diagram

5
推荐指数
1
解决办法
5111
查看次数

Venn3:如何重新定位圆圈和标签?

我做了一个三向维恩图.我有三个问题似乎无法解决.

  1. 移动圆圈标签的代码是什么(即"Set1","Set2","Set3")因为现在距离圆圈太远了.

  2. 将圆圈设为三个相同尺寸/更改圆圈尺寸的代码是什么?

  3. 围绕绘图移动圆圈的代码是什么.现在,set2在set3内(但颜色不同),我希望该图看起来更像是显示维恩图的"标准"方式(即3个独立的圆圈,中间有一些重叠).

另一方面,我发现很难找到诸如"set_x","set_alpha"之类的命令; 如果有人知道一本可以通过上述问题回答的手册我会很感激,我似乎无法找到一个包含我需要的所有信息的地方.

import sys
import numpy
import scipy
from matplotlib_venn import venn3,venn3_circles
from matplotlib import pyplot as plt

#Build three lists to make 3 way venn diagram with                                                                                                                             
list_line = lambda x: set([line.strip() for line in open(sys.argv[x])])
set1,set2,set3 = list_line(1),list_line(2),list_line(3)

#Make venn diagram                                                                                                                                                             
vd = venn3([set1,set2,set3],set_labels=("Set1","Set2","Set3"))

#Colours: get the HTML codes from the net                                                                                                                                      
vd.get_patch_by_id("100").set_color("#FF8000")
vd.get_patch_by_id("001").set_color("#5858FA")
vd.get_patch_by_id("011").set_color("#01DF3A")

#Move the numbers in the circles                                                                                                                                               
vd.get_label_by_id("100").set_x(-0.55)
vd.get_label_by_id("011").set_x(0.1)

#Strength of color, 2.0 is very strong.                                                                                                                                        
vd.get_patch_by_id("100").set_alpha(0.8)
vd.get_patch_by_id("001").set_alpha(0.6)
vd.get_patch_by_id("011").set_alpha(0.8)

plt.title("Venn …
Run Code Online (Sandbox Code Playgroud)

python matplotlib venn-diagram matplotlib-venn

5
推荐指数
1
解决办法
2725
查看次数

并排输出Venn gList对象和网络图

如何在一个PDF页面中并排绘制网络图(igraph包图)和维恩图(VennDiagram gList对象)?

尝试遵循以下解决方案,但不起作用:
并排
绘制gList 并排绘制2个tmap对象
使用Vennerable并排Venn图

这是一个示例,将它们分为两页。我曾经grid.newpage()将其绘制在单独的页面中,否则它将被绘制在彼此的顶部。

library(grid)
library(igraph)
library(VennDiagram)

#network graph object
relations <- data.frame(from=c("Bob", "Cecil", "Cecil", "David",
                               "David", "Esmeralda"),
                        to=c("Alice", "Bob", "Alice", "Alice", "Bob", "Alice"))
g <- graph_from_data_frame(relations, directed=TRUE)

# venn plot object
plotVenn <- venn.diagram(
  list(A = 1:150, B = 121:170),
  filename = NULL)
class(plotVenn)
# [1] "gList"

# output to PDF, outputs into 2 pages, I need 1 page 2 plots side-by-side
pdf("temp.pdf")

#network
igraph::plot.igraph(g)

#venn …
Run Code Online (Sandbox Code Playgroud)

r igraph venn-diagram r-grid

5
推荐指数
1
解决办法
288
查看次数

R中带有内部标签的3维维恩图

我一直在寻找如何以编程方式显示内部标签(重叠项)来绘制维恩图。代码中没有错误,但是我仍然无法弄清楚该如何解决。

维恩图

  require(VennDiagram)

  AA <- c("hi","foo", "bar","yep","woo","hoo")
  BB <- c("baa","yep", "woo","yes")
  CC <- c("yes","foo","hi","woo", "huh")

  x <- list(AA=AA , BB=BB , CC=CC)


  v0 <- venn.diagram( x, filename=NULL)

  grid.draw(v0)

  overlaps <- calculate.overlap(x)
  #overlaps <- rev(overlaps)


  for (i in 1:length(overlaps)){
    v0[[i+6]]$label <- paste(overlaps[[i]], collapse = "\n") # labels start at position 7 in the list for Venn's with 3 circles
  }


  grid.newpage()
  grid.draw(v0)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

r venn-diagram

5
推荐指数
1
解决办法
866
查看次数

在一张图表上放置两个维恩图

使用VennDiagram包,我通过以下方式生成两个图形:

# First graph
VennDiagram::draw.pairwise.venn(
    area1 = 100,
    area2 = 70,
    cross.area = 30,
    category = c("A1", "B1"),
    fill = c("#00204DFF", "#FFEA46FF")
) -> vg1

# Second graph
VennDiagram::draw.pairwise.venn(
    area1 = 120,
    area2 = 80,
    cross.area = 10,
    category = c("A2", "B2"),
    fill = c("#000004FF", "#FCFFA4FF")
) -> vg2
Run Code Online (Sandbox Code Playgroud)

通过调用时grid::grid.draw(vg1)grid::grid.draw(vg2)图表按预期显示:

grid::grid.draw(vg1) vg1

grid::grid.draw(vg2) vg2

我如何创建一个将两个图都放在另一个图下的网格对象?

尝试

grdFrme <- grid::grid.frame(name = "gf")
grid::grid.pack("gf", vg1)
Run Code Online (Sandbox Code Playgroud)

packGrob(grid.get(gPath),grob,side,row,row.before,row.after中的错误:无效的'grob'

所需结果

两个图

charts r venn-diagram r-grid

5
推荐指数
1
解决办法
344
查看次数

在 R 中创建交互式维恩图

我正在使用 R 来构建交互式维恩图。我目前正在使用 VennDiagram 库来执行此操作,但使用该库无法制作交互式维恩图。任何人都可以帮助我吗?

r venn-diagram

5
推荐指数
0
解决办法
974
查看次数

维恩图最多4个列表 - 输出交叉点和唯一集

在我的工作中,我使用了很多维恩图,到目前为止,我一直依赖基于网络的" 维尼 ".这提供了导出各种交叉点(即,仅属于该特定交叉点的元素)的不错选项.此外,它最多可以绘制4个列表.

问题是,使用大型列表(4K +元素)和超过3组这样做是一件苦差事(复制,粘贴,保存......).因此,我决定专注于自己生成列表并使用它来绘制.

这篇冗长的介绍导致了问题的关键.给定3或4个部分包含相同元素的列表,如何在Python中处理它们以获得各种集合(唯一的,通用的4,常见于第一和第二等等),如维恩图所示(3列表图形示例,4列表图形示例)?对于3个列表来说看起来并不太难,但对于4个列表来说它有点复杂.

python list venn-diagram

4
推荐指数
1
解决办法
3515
查看次数

使用 R 计算维恩图超几何 p 值

Hi\xef\xbc\x8c我看到有人计算维恩图重叠 p 值,如下例所示。他们使用超几何分布和 R。当我在 R 中应用他们的函数时,我只是无法得到相同的结果。谁能帮我解决这个问题吗?

\n\n

我在别人的出版物中看到的示例:

\n\n

从15220个基因中,A组是1850+195个基因,B组是195+596个基因,重叠是195个基因。它们的 p 值为 2e-26。

\n\n

他们的方法是:给定总共N个基因,如果基因集A和B分别包含m和n个基因,并且其中k个基因是共同的,则富集的p值计算如下:

\n\n
p = \xce\xa3 (m,i)(N-m,n-i)/(N,n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于ifromkmin(m,n),其中“ (m,i)”表示二项式形式。

\n\n

我使用 R 的方式是:

\n\n

sum(choose(596+195,195:(195+596))*choose(15220-596-195,(1850+195)-195:(195+596)))/choose(15220,1850+195)

\n\n

我有NaN

\n\n

或者使用:phyper(195,1850+195,15220-1850-195,596+195),我得到 1。

\n\n

我还参考了链接http://www.pangloss.com/wiki/VennSignificance \n但是当我计算时

\n\n

1 - phyper(448,1000,13800,2872)在 R 中,我得到的链接是 0 而不是 1.906314e-81。

\n\n

我对 R 和统计完全陌生,很抱歉在这里发布了很多错误。

\n

r venn-diagram p-value

4
推荐指数
1
解决办法
6319
查看次数

在 R 中向维恩图添加百分比

我正在尝试为维恩图的每个部分添加百分比。我曾尝试使用 paste 将圆圈标题与百分比连接起来。然而,不幸的是,这并不完全有效,因为它只提供每个独立组的百分比,而不提供每个交叉点的百分比,因为交叉点没有标题。理想情况下,我希望百分比在圆圈内。例如,我希望中间的三重交叉点(工作、学习、娱乐)表示“83, 20.54%”,而不是当前表示的“83”。

以下是我正在使用的代码的基本示例:

g = draw.triple.venn(
  area1 = 396,
  area2 = 273,
  area3 = 147,
  n12 = 266,
  n23 = 86,
  n13 = 143,
  n123 = 83,
  category = c("Study", "Work", "Play"),
  fill = c("blue", "red", "green"),
  euler.d=TRUE,
  scaled=TRUE, ind = FALSE,
)

require(gridExtra)
grid.arrange(gTree(children=g), main="Title", sub="subtitle")
Run Code Online (Sandbox Code Playgroud)

r percentage venn-diagram set-intersection

4
推荐指数
3
解决办法
6358
查看次数