5

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

5 回答 5

5

目前VennDiagram::draw.triple.venn已将单元格标签硬编码为数字。没有可用于更改该默认值的开关。在您确定定义标签的位置后,很容易破解它。改变:

cell.labels <- areas

至:

draw.triple.venn2 <- function( ....
      .....
cell.labels <- paste0(areas," : ", round( 100*areas/sum(areas), 1), "%")
       .....
  }

png(); 
 print( grid.arrange(gTree(children=g), main="Title", sub="subtitle")); 
dev.off()

在此处输入图像描述

我定义了一个draw.triple.venn2函数并在您的代码中插入了一个“2”并得到了您在上面看到的内容。

于 2014-02-12T02:45:02.253 回答
5

截至目前,VennDiagram 包现在支持 print.mode 参数,可以将其更改为“percent”以在维恩图中显示百分比。例如:

example.list = list(A=1:10, B=6:15, C=c(10, 16:20))
venn.grid = venn.diagram(example.list, filename=NULL, print.mode="percent")
grid.draw(venn.grid)

在此处输入图像描述

于 2016-01-29T18:40:24.187 回答
4

这是使用 venn.diagram() 的示例

venn.diagram(
x = list(NTNU$genes, gse$genes, meta$genes),
category.names = c("Study", "Work", "Play"),
col = "transparent",
fill = c("blue", "green", "red"),
alpha = 0.30,
print.mode=c("raw","percent"),
filename = "test_venn_diagramm.png",
imagetype="png",
output=TRUE,
)

结果

于 2020-03-06T13:11:39.230 回答
2

BondedDust 的回答对我非常有帮助。不幸的是,由于缺乏声誉,我无法支持他的回答,或者在评论中添加以下内容,所以我会在这里写下来。

为了扩展 BondedDust 的出色解决方案,我遇到了与用户相同的问题,我发现修改默认 VennDiagram 函数的一种简单方法是简单地将这一行添加到代码中(在加载 VennDiagram 库之后):

body(draw.triple.venn)[[78]] <- substitute(cell.labels <- paste0(areas," : ", round( 100*areas/sum(areas), 1), "%"))

希望能帮助到你

参考:

  1. https://stackoverflow.com/a/2458377/3881613
  2. https://stackoverflow.com/a/2485556/3881613
于 2014-09-03T11:33:03.783 回答
1

在图表中绘制百分比时,最好使用手动文本附件,因为它既简单又非常灵活,可以随意添加任何内容。示例如下:

library('VennDiagram')
plot.new() #locator can be used in a plot graph but not a venn graph, so first make a brand new plot graph
draw.single.venn(area = 22, category = "Dog People")
text(locator(1),'Outlier',adj=0)
于 2014-12-02T13:57:40.427 回答