簡體   English   中英

帶有項目標簽的維恩圖

[英]Venn Diagram with Item labels

假設我有兩個向量

foo <- c('a','b','c','d')
baa <- c('a','e','f','g')

有誰知道一種生成維恩圖的方法,但可以在圖中可視化矢量項。

像這樣? (在PowerPoint中制作)在此處輸入圖像描述

使用來自VennDiagram軟件包的venn.diagram函數的快速解決方案。 標簽(計數)在函數中進行了硬編碼,因此無法使用函數參數進行更改。 但是對於這樣一個簡單的示例,您可以自己更改grobs

library(VennDiagram)

# your data
foo <- c('a','b','c','d')
baa <- c('a','e','f','g')

# Generate plot
v <- venn.diagram(list(foo=foo, baa=baa),
                  fill = c("orange", "blue"),
                  alpha = c(0.5, 0.5), cat.cex = 1.5, cex=1.5,
                  filename=NULL)

# have a look at the default plot
grid.newpage()
grid.draw(v)

# have a look at the names in the plot object v
lapply(v,  names)
# We are interested in the labels
lapply(v, function(i) i$label)

# Over-write labels (5 to 7 chosen by manual check of labels)
# in foo only
v[[5]]$label  <- paste(setdiff(foo, baa), collapse="\n")  
# in baa only
v[[6]]$label <- paste(setdiff(baa, foo)  , collapse="\n")  
# intesection
v[[7]]$label <- paste(intersect(foo, baa), collapse="\n")  

# plot  
grid.newpage()
grid.draw(v)

哪個產生

在此處輸入圖片說明

顯然,這種方法將很快失去更多類別和交叉點的控制。

使用RAM軟件包:

library(RAM)
foo <- c('a','b','c','d')
baa <- c('a','e','f','g')
group.venn(list(foo=foo, baa=baa), label=TRUE, 
    fill = c("orange", "blue"),
    cat.pos = c(0, 0),
    lab.cex=1.1)

在此處輸入圖片說明

另一種我覺得更簡單的方法是使用帶有show_elements = TRUEggvenn package 。

library(ggvenn)
library(RColorBrewer)
AA <- c("hi","foo", "bar","yep","woo","hoo")
BB <- c("baa","yep", "woo","yes")
CC <- c("yes","foo","hi","woo", "huh")

x <- list(AA=AA , BB=BB , CC=CC)

ggvenn(x, show_elements = T, label_sep = "\n", fill_color = brewer.pal(name="Set2",n=3))

我無法顯示圖像,所以這里是 output 的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM