如何在维恩图中添加逗号分隔符

时间:2017-03-29 20:53:27

标签: r venn-diagram

在r中有一种方法可以在维恩图上将数字分隔符添加到数千个。

venn.plot <- VennDiagram::draw.pairwise.venn(10000, 7000, 3000, c("First", "Second"), scaled = FALSE)

grid::grid.draw(venn.plot)

结果图表如下所示。

enter image description here

3 个答案:

答案 0 :(得分:2)

看起来这个功能不是为了做到这一点。如果你真的想使用这个功能,你可以&#34; hack&#34;它替换它用于标签的默认格式代码。请注意,这种方法非常脆弱,因为我们正在编辑特定的&#34; line&#34;代码首先制作一份功能

myvenn <- VennDiagram::draw.pairwise.venn

这是默认格式化程序

body(myvenn)[[46]]
# wrapLab <- function(num) {
#     stri = ""
#     if (print.mode[1] == "percent") {
#         stri <- paste(signif(num * 100/denom, digits = sigdigs), 
#             "%", sep = "")
#         if (isTRUE(print.mode[2] == "raw")) {
#             stri <- paste(stri, "\n(", num, ")", sep = "")
#         }
#     }
#     if (print.mode[1] == "raw") {
#         stri <- num
#         if (isTRUE(print.mode[2] == "percent")) {
#             stri <- paste(stri, "\n(", paste(signif(num * 100/denom, 
#                 digits = sigdigs), "%)", sep = ""), sep = "")
#         }
#     }
#     return(stri)
# }

让我们通过调用prettyNum替换它来添加逗号

body(myvenn)[[46]][[3]] <- quote(function(x) {
    prettyNum(x ,big.mark=",",scientific=FALSE)
})

现在我们可以调用我们的函数版本

venn.plot <- myvenn(10000, 7000, 3000, c("First", "Second"), scaled = FALSE)
grid::grid.draw(venn.plot)

enter image description here

答案 1 :(得分:1)

您也可以手动编辑项目。

venn.plot[[5]][["label"]] <- "7,000"
venn.plot[[6]][["label"]] <- "4,000"
venn.plot[[7]][["label"]] <- "3,000"

grid::grid.draw(venn.plot)

enter image description here

答案 2 :(得分:0)

这是循环的另一种方式

venn.plot <- VennDiagram::draw.pairwise.venn(10000, 7000, 3000, c("First", "Second"), scaled = FALSE)

for(i in 1:length(venn.plot)){

 if(!is.null(venn.plot[[i]][["label"]]) &&
    !is.na(as.numeric(venn.plot[[i]][["label"]]))
 ) {

    venn.plot[[i]][["label"]] <- prettyNum(venn.plot[[i]][["label"]], big.mark = ",")

 }
 }

Warning messages:
1: NAs introduced by coercion 
2: NAs introduced by coercion 
grid::grid.draw(venn.plot)