VennDiagram与股票/相对数字

时间:2016-01-21 13:23:57

标签: r venn-diagram

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

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)一切正常,但我不想要(我的真实数据有更多的数字)。有没有办法超越内部一致性检查?或者是否有更好的方式来显示股票?

1 个答案:

答案 0 :(得分:1)

首先,请注意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()