利用R包“ggvenn”快速绘制韦恩图(Venn Diagram)

2022-08-21 17:39:35 浏览数 (2)

韦恩图(Venn diagram)是一种能直观展示不同数据集之间的集合关系的图,常见的集合运算主要包括:交集(intersection)并集(union)补集(complement)。在R语言中,有很多R包可以实现韦恩图的绘制,米老鼠在这里推荐“ggvenn”和“ggVennDiagram”这两个R包,它们都是基于ggplot2的绘图系统,和其它ggplot2绘制的图兼容性好,这里主要介绍“ggvenn”这个R包的用法。

这里假定我们有两个基因集,并且想展示这两个基因集的共同基因和不同基因,具体代码如下:

代码语言:javascript复制
install.packages("ggvenn") #安装ggvenn包
library(ggvenn) #加载ggvenn包
gene_set1 <- c("BIRC3","JUN", "FOS", "MAP3K14",
               "MAP3K8","CREB5", "CCL2", "CCL20",
               "CXCL1", "CXCL3","CXCL5") #输入第一个基因集
 
gene_set2 <- c("FOS","FOSB", "JUN", "JUND",
               "FOSL1","TNFAIP3", "CXCL1", "CXCL3",
               "CXCL5", "CXCL8","CXCL10") #输入第二个基因集
base::intersect(gene_set1, gene_set2) #获取两个基因集的交集
#[1] "JUN"   "FOS"   "CXCL1" "CXCL3""CXCL5"
union(gene_set1, gene_set2) #获取两个基因集的并集
#[1] "BIRC3"   "JUN"     "FOS"     "MAP3K14""MAP3K8"  "CREB5"   "CCL2"  
#[8] "CCL20"   "CXCL1"   "CXCL3"   "CXCL5"   "FOSB"    "JUND"    "FOSL1" 
#[15] "TNFAIP3""CXCL8"   "CXCL10"
setdiff(gene_set1, gene_set2) #获取gene_set1减去gene_set2的差集
#[1] "BIRC3"   "MAP3K14" "MAP3K8"  "CREB5"   "CCL2"    "CCL20"
setdiff(gene_set2, gene_set1) #获取gene_set2减去gene_set1的差集
#[1] "FOSB"    "JUND"    "FOSL1"   "TNFAIP3" "CXCL8"   "CXCL10"
a <- list(`Gene Set 1` = gene_set1,
         `Gene Set 2` = gene_set2) #将基因集变成列表变量
p1 <- ggvenn(a, show_elements = TRUE,fill_color = c("white", "white"),
                      label_sep = "n", stroke_size = 1.5,set_name_size = 5,
                      text_size = 3)
p1

实际上,ggvenn包使用起来非常简单,它最主要的就是ggvenn()函数,该函数的参数比较丰富,主要包括如下内容:

(1)data:用于绘制韦恩图的数据集,可以是数据框,也可以是列表;

(2)columns:针对数据框,可以提取特定的列绘图;

(3)show_elements:是一个逻辑参数,默认值是FALSE,表示是否把数据集的元素展示出来,在实例中也就是表示是否展示基因名;

(4)show_percentage:是一个逻辑参数,默认值是TRUE,表示是否展示重叠元素的比例,用百分数表示;

(5)digits:是一个数值型参数,默认值是1,表示小数点位数;

(6)fill_color:表示填充颜色,默认值是c("blue","yellow", "green", "red");

(7)stroke_color:表示圆形边框颜色,默认值是"black";

(8)stroke_size:表示圆形边框的粗细,默认值是1;

(9)set_name_color:表示不同数据集名称的文本颜色,默认值是"black";

(10)set_name_size:表示不同数据集名称的文本大小,默认值是6;

(11)text_color:表示不同数据集里元素的文本颜色,默认值是"black";

(12)text_size:表示不同数据集里元素的文本大小,默认值是4;

(13)label_sep:表示数据集里元素的分割符号,默认值是 ",",但建议改为”n”。

代码语言:javascript复制
p2 <- ggvenn(a, show_elements = FALSE,fill_color = c("white", "white"),
             label_sep = "n", stroke_size = 1.5,set_name_size = 5,
             text_size = 3)
p2

在这里,我们将参数show_elements设置为FALSE后,结果里展示的就是重叠的百分比。

代码语言:javascript复制
cowplot::plot_grid(p1, p2) #将图1和图2合并起来

关于韦恩图的简单绘制就讲到这里,有兴趣的小伙伴可以学学“ggVennDiagram”这个包。

0 人点赞