美文网首页生物信息可视化做图数据可视化之美
如何绘制像花一样好看的韦恩图?

如何绘制像花一样好看的韦恩图?

作者: 生信师姐 | 来源:发表于2022-08-22 14:05 被阅读0次

目录

1. 数据处理
2. 绘制venn图
3. 图表的美化

前段时间看文献的时候,遇到这样一类韦恩图(如下图),我个人觉得非常个性、漂亮!

废话不多说,下面就为大家介绍一种画法,基本上可以实现范例文章中的绘图效果。

1. 数据处理

#导入数据;
data = read.csv("venn_data.csv",header = TRUE,row=1)
head(data)
#获取行名;
otus = rownames(data)
head(otus)
#获取列名;
groups = colnames(data)
groups
#指定比较组,"_"为分隔符号;
pairwises= "YF_YC_ZF_ZC_XC_XF_CF"

#获取所指定比较组的样本名;
s<-strsplit(pairwises,"_")
s
compares = unlist(s)
compares
#筛选每个样本中丰度值大于0的otu,保存为list;
x = list()
x
#[]选取数据框、矩阵、向量中的元素,[[]]选取列表中的元素;
for (i in compares){
  x[[i]] =otus[as.numeric(data[,i]) > 0]
}
summary(x)

2. 绘制venn图

本次绘制venn图用到的R包为ggVennDiagram,一般的venn图绘制工具最多支持5组(5维)数据,而ggVennDiagram包最多可支持7组数据。

#从CRAN安装ggVennDiagram包;
install.packages("ggVennDiagram")
install.packages("ggsci")

#载入所需的R包;
library(ggplot2)
library(ggsci)
library(sf)
library(ggVennDiagram)

#自定义颜色;
color1 <- alpha("#f8766d",0.9)
color2 <- alpha("#FF99CC",0.7)
color3 <- alpha("#c77cff",0.5)
color4 <- alpha("#99CC00",0.5)

#绘制常见的4组数据venn图;
ggVennDiagram(x[1:4], label_alpha=0) +
  scale_fill_gradient(low="white",high =color4 ,guide="none")
#绘制5组数据的venn图;
#label_alpha = 0去除文字标签底色;
#category.names参数用于设定样本名称;
ggVennDiagram(x[1:5], label_alpha=0,label_size =3) +
  scale_color_brewer(palette = "Paired")+
  scale_fill_gradient(low="white",high = color1)
#edge_size设置线条粗细;
#label ="count"隐藏百分比,让原本就不“富裕”的空间更大一点;
#guide="none"隐藏图例;
ggVennDiagram(x[1:5], label_alpha=0,label_size =4,
  edge_size = 0.5,label ="count") +
  scale_color_brewer(palette = "Paired")+
  scale_fill_gradient(low="white",high = color1,guide="none")
#label = "none"用于隐藏图上的标签;
ggVennDiagram(x[1:5], label_alpha=0,label = "none",
  edge_size = 0.5) +
  scale_color_lancet()+
  scale_fill_gradient(low="gray100",high = "gray95",guide="none")
#还可以用交互的方式(plotly)查看每个子集中的基因;
ggVennDiagram(x[1:5], show_intersect = TRUE)
#下面再看下6组数据的绘制效果;
#个人感觉绘制6组时得到的图形区域有点胖,有点散,与文章的图还是有差异的;
ggVennDiagram(x[1:6], label_alpha=0,label_size =3,
  edge_size = 0.5,label ="count") +
  scale_color_lancet()+
  scale_fill_gradient(low="gray100",high = "gray95",guide="none")
#同样的方法,再看下7组数据的绘制效果;
ggVennDiagram(x, label_alpha=0,label_size =3,
  edge_size = 0.5,label ="count") +
  scale_color_lancet()+
  scale_fill_gradient(low="gray100",high = color2,guide="none")
#不添加过多的填充颜色,便于在Ai中进行后期调整;
ggVennDiagram(x, label_alpha=0,label = "none",
  edge_size = 0.5) +
  scale_color_lancet()+
  scale_fill_gradient(low="gray100",high = "gray95",guide="none")

3. 图表的美化

以7组数据的venn图为例,主要用Ai为每个分组的“独有”区域添加相应的分组渐变色,并添加对应子集的OUT(或基因)数量。首先,使用Ai打开前面保存的PDF格式的venn图,如下。

然后,用小白工具(直接选择工具)逐一选中每个分组的“线条”,并将其描边颜色新建为色板。

使用小黑工具(选择工具)双击每组数据独有“部分”的图形进入图层隔离模式,依次选中每一区块,为其添加相应的填充颜色,如下。

接着,通过效果\风格化菜单,逐一为每个色块应用内发光效果,快捷键为“Ctrl+Shift+E”。

我这里使用的是中心内发光,具体的参数设置如下。

整体的颜色有点浓烈,按住Shift键,加选所有的色块,将不透明度调整为50%左右。

接下来,使用文字工具将感兴趣区块的OUT或gene数量添加到图形上,这里的字体选择Arial,字号为14pt。

接着优化一下字体的大小和颜色,至于如何为图表添加小图案,可参考《与科研巨佬的图表相比,我的差在哪里?》一文,这里不再赘述。最终的效果如下:

好啦,今天就分享到这里啦~

参考资料
Sucher J, Mbengue M, Dresen A, et al. Phylotranscriptomics of the Pentapetalae reveals frequent regulatory variation in plant local responses to the fungal pathogen Sclerotinia sclerotiorum[J]. The Plant Cell, 2020, 32(6): 1820-1844.Gao, C.-H., Yu, G., and Cai, P. (2021). ggVennDiagram: An Intuitive, Easy-to-Use, and Highly Customizable R Package to Generate Venn Diagram. Frontiers in Genetics 12, 1598. doi: 10.3389/fgene.2021.706907.

转自:https://zhuanlan.zhihu.com/p/448600788

相关文章

网友评论

    本文标题:如何绘制像花一样好看的韦恩图?

    本文链接:https://www.haomeiwen.com/subject/xkdigrtx.html