韦恩图(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”这个包。