目錄
1. 數(shù)據(jù)處理
2. 繪制venn圖
3. 圖表的美化
前段時間看文獻的時候,遇到這樣一類韋恩圖(如下圖)召耘,我個人覺得非常個性百炬、漂亮!
廢話不多說污它,下面就為大家介紹一種畫法剖踊,基本上可以實現(xiàn)范例文章中的繪圖效果庶弃。
1. 數(shù)據(jù)處理
#導(dǎo)入數(shù)據(jù);
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
#[]選取數(shù)據(jù)框梆造、矩陣缴守、向量中的元素,[[]]選取列表中的元素;
for (i in compares){
x[[i]] =otus[as.numeric(data[,i]) > 0]
}
summary(x)
2. 繪制venn圖
本次繪制venn圖用到的R包為ggVennDiagram澳窑,一般的venn圖繪制工具最多支持5組(5維)數(shù)據(jù)斧散,而ggVennDiagram包最多可支持7組數(shù)據(jù)。
#從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組數(shù)據(jù)venn圖麻裁;
ggVennDiagram(x[1:4], label_alpha=0) +
scale_fill_gradient(low="white",high =color4 ,guide="none")
#繪制5組數(shù)據(jù)的venn圖箍镜;
#label_alpha = 0去除文字標簽底色;
#category.names參數(shù)用于設(shè)定樣本名稱煎源;
ggVennDiagram(x[1:5], label_alpha=0,label_size =3) +
scale_color_brewer(palette = "Paired")+
scale_fill_gradient(low="white",high = color1)
#edge_size設(shè)置線條粗細色迂;
#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組數(shù)據(jù)的繪制效果;
#個人感覺繪制6組時得到的圖形區(qū)域有點胖兽埃,有點散侥钳,與文章的圖還是有差異的;
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組數(shù)據(jù)的繪制效果舷夺;
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中進行后期調(diào)整售貌;
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組數(shù)據(jù)的venn圖為例给猾,主要用Ai為每個分組的“獨有”區(qū)域添加相應(yīng)的分組漸變色,并添加對應(yīng)子集的OUT(或基因)數(shù)量颂跨。首先敢伸,使用Ai打開前面保存的PDF格式的venn圖,如下毫捣。
然后详拙,用小白工具(直接選擇工具)逐一選中每個分組的“線條”,并將其描邊顏色新建為色板蔓同。
使用小黑工具(選擇工具)雙擊每組數(shù)據(jù)獨有“部分”的圖形進入圖層隔離模式饶辙,依次選中每一區(qū)塊,為其添加相應(yīng)的填充顏色斑粱,如下弃揽。
接著,通過效果\風(fēng)格化菜單则北,逐一為每個色塊應(yīng)用內(nèi)發(fā)光效果矿微,快捷鍵為“Ctrl+Shift+E”。
我這里使用的是中心內(nèi)發(fā)光尚揣,具體的參數(shù)設(shè)置如下涌矢。
整體的顏色有點濃烈,按住Shift鍵快骗,加選所有的色塊娜庇,將不透明度調(diào)整為50%左右。
接下來方篮,使用文字工具將感興趣區(qū)塊的OUT或gene數(shù)量添加到圖形上名秀,這里的字體選擇Arial,字號為14pt藕溅。
接著優(yōu)化一下字體的大小和顏色匕得,至于如何為圖表添加小圖案,可參考《與科研巨佬的圖表相比巾表,我的差在哪里汁掠?》一文,這里不再贅述攒发。最終的效果如下:
好啦调塌,今天就分享到這里啦~
參考資料
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.
轉(zhuǎn)自:https://zhuanlan.zhihu.com/p/448600788