使用 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.mode
和 sigdigs
,这可能对您有所帮助。如果这些还不够,您可以尝试破解输出,只需将所有标签的值替换为符合您口味的改进值即可。下面是一个示例:
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()