[英]How to add comma separator in triple venn diagram?
我是 R 的初學者,我有一個看起來像這樣的功能代碼
library(VennDiagram)
grid.newpage()
draw.triple.venn(area1=49644, area2=38697, area3=33281, n12=14221, n23=11026,
n13=13635, n123=4242, category=c("DOGS", "CATS", "HORSES"),
cex=1.6, cat.cex=1.8, lwd=2, fill=c("blue", "pink1", "grey50"))
我想為大數字添加逗號分隔符,但不知道如何添加 prettyNum 或一些類似的 function。 有人可以幫我嗎?
我們可以破解 draw.triple.venn 的隱形 output 拋出的draw.triple.venn
。
V <- draw.triple.venn(...) ## catch it in an object
使用str(v)
探索對象的結構表明它基本上是一個列表,其中一些列表對象中定義了標簽。
str(V)
# [...]
# $ :List of 11
# ..$ label : chr "26030" <-- here "label"
# ..$ x : 'unit' num 0.2npc
# .. ..- attr(*, "valid.unit")= int 0
# .. ..- attr(*, "unit")= chr "npc"
# ..$ y : 'unit' num 0.739npc
# .. ..- attr(*, "valid.unit")= int 0
# .. ..- attr(*, "unit")= chr "npc"
# ..$ just : chr "centre"
# [...]
我們可以使用方括號 function `[[`()
提取它們,將它們保存在兩個不同的臨時對象中,並使用所需的參數formatC
big.mark=
對它們進行格式化。 之后,我們將未觸及的臨時 object tmp2
替換為修改后的臨時 object tmp1
,其中數值為非NA
。
tmp1 <- tmp2 <- lapply(V, `[[`, "label")
tmp1[sapply(lapply(V, `[[`, "label"), is.null)] <- NA
tmp1[] <- ifelse(is.na(as.numeric(tmp1)), NA,
formatC(as.numeric(tmp1), format="d", big.mark=","))
tmp2[!is.na(tmp1)] <- tmp1[!is.na(tmp1)]
最后,我們使用Map
中用大標記修改的標簽,並告訴 R class
是"gList"
。
V <- `class<-`(Map(`[[<-`, V, "label", tmp2), "gList")
現在,我們可以使用grid.draw
。
grid.newpage()
grid.draw(V)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.