r语言 - 带有份额/相对数字的维恩图



使用 R 和 1.6.9 VennDiagram,我想绘制一个三维恩图并显示份额而不是绝对值。但是,内部一致性检查无法处理舍入错误:

draw.triple.venn(area1=0.89, area2=round(0.481, 2), area3=0.5,
                 n12=0.46, n23=0.4, n13=0.47)

舍入引起的误差非常小:

> round(0.48, 2)-0.46-0.4+0.38
[1] -5.551115e-17

使用完整的数字,即 round(0.48, 3)一切正常,但我不希望这样(我的真实数据有更多的数字)。有没有办法溢出内部一致性检查?或者有没有更好的方法来显示股票?

首先,请注意draw.triple.venn函数具有参数 print.modesigdigs ,这可能对您有所帮助。如果这些还不够,您可以尝试破解输出,只需将所有标签的值替换为符合您口味的改进值即可。下面是一个示例:

grid.newpage()
draw.triple.venn(area1=0.89, area2=0.481, area3=0.5,
                 n12=0.46, n23=0.4, n13=0.47, n123=0.38)
grobjs = grid.ls()    # List of all objects on the diagram
for (o in grobjs$name) {
    # Pick out all text labels
    if (grepl(".text.", o) == 1) {
      # Re-format their value
      old_value = as.numeric(grid.get(o)$label)
      new_value = sprintf("%0.2f", old_value)   # 
      if (new_value != "NA") {
        grid.edit(o, label=new_value, redraw=FALSE) 
      }
    }
}
grid.refresh()

最新更新