2016-01-21 130 views
0

使用RVennDiagram 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)這一切工作正常,但我不要這樣(我的真實數據有更多的數字)。有沒有辦法超越內部一致性檢查?或者有沒有更好的方式來顯示股票?

回答

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()