您的当前位置:首页正文

如何用ggalluvial绘制ceRNA网络图?

2020-07-15 来源:易榕旅网
如何⽤ggalluvial绘制ceRNA⽹络图?

在之前的《绘制这种漂亮的桑基图只需“⼀步”?》和《3分⽂章和30分⽂章图表差在哪⾥?》两篇⽂章中已经介绍过桑基图(Sankey plots)了,但⽬前在⽂章中还是⽐较少见。

桑基图主要⽤来展⽰数据的“流动”变化,分⽀的宽度表⽰流量的⼤⼩,应⽤于能源流向、收⼊⽀出、⼈员流动,⽣物群落丰度变化等数据的可视化。但在之前提到的⼀篇⽂献中,作者巧妙地⽤桑基图来可视化差异ceR

(Cancer Cell International, 2019)

⽂章作者⽤到的R包是ggalluvial,安装⽅法⾮常简单,直接⽤install.packages(“ggalluvial”)函数在线安装即可。我这⾥就⽤这个R包为⼤家重现原⽂中的桑基图吧!数据准备

本⽂⽤到的范例数据来⾃原⽂的附录⽂件(Table S4),下载链接:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6458652/

#载⼊ggalluvial包;library(ggalluvial)#读⼊数据;

df <- read.table('network.txt',sep= '\',header = T)#检查数据的前6⾏;head(df)

“宽数据”作图

# 直接使⽤原始数据(宽数据)绘图;

# 绘制alluvium,width调整结点处条带⽔平宽度;knot.pos调整曲率;reverse调整着⾊顺序;p1<-ggplot(data = df,aes(axis1 = lncRNA,axis2 = miRNA,axis3 = mRNA, y = Freq))+ geom_alluvium(aes(fill = mRNA),width = 0.1, knot.pos = 0.1, reverse = F)p1

# 绘制stratum,添加⽂字标签并隐藏图例;

p2<-p1+geom_stratum(fill='white',color='skyblue',alpha= .7,width = 1/7)+ geom_text(stat = 'stratum', size =1.5,color='black',label.strata = T)+ guides(fill = FALSE)p2

#修改横轴的标签;p3<-p2+

scale_x_discrete(limits = c('lncRNA','miRNA','mRNA'),expand = c(0, 0))+ xlab('') + ylab('')

#⾃定义主题;

mytheme1<-theme_bw() +

theme(panel.grid =element_blank()) + theme(panel.border = element_blank()) +

theme(axis.line = element_blank(),axis.ticks =element_blank(),axis.text.y =element_blank())p4<-p3+mytheme1p4

“长数据”作图

使⽤宽数据画图⽐较直观,容易理解,但如果想给不同的stratum添加不同的颜⾊就不是很⽅便。其实,ggalluvial也⽀持长数据,毕竟是基于ggplot2的。

#检查数据是否符合要求;head(df)

is_alluvia_form(df,weight ='Freq')# 转成长数据格式;

df_lodes <- to_lodes_form(df,key ='x', value = 'stratum', id = 'alluvium',axes =1:3)#检查转换后的数据是否符合作图要求;head(df_lodes,12)

is_lodes_form(df_lodes,key = 'x',value = 'stratum',id = 'alluvium',weight ='Freq')

#⾃⼰⽣成渐变⾊;

mycol3=colorRampPalette(c('#00abef','#64b036','#ffe743','#64b036','#00abef'))(36)

对于绘图⽅法,除了数据映射⽅式,其他参数的⽤法与上⽂相似,这⾥就不做代码分解演⽰啦。

p5<-ggplot(df_lodes,aes(x = x, stratum =stratum, alluvium = alluvium, fill = stratum, label = stratum)) + scale_x_discrete(expand = c(0, 0)) + geom_flow(width = 0.2, knot.pos = 0.1) +

geom_stratum(alpha = .9,color='grey20',width = 1/7) + geom_text(stat = 'stratum', size =1.5,color='black') + scale_fill_manual(values = mycol3) + xlab('') + ylab('') + theme_bw() +

theme(panel.grid =element_blank()) + theme(panel.border = element_blank()) +

theme(axis.line = element_blank(),axis.ticks =element_blank(),axis.text.y =element_blank())+ guides(fill = FALSE) p5

绘图的结果如下:

如果⽤ggplot2的默认配⾊,其实也挺好看的,如下:

#使⽤⽂章中图表的颜⾊集;mycol <-rep(c('#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#029149','#431A3D','#91612D','#6E568C','#E0367A','#D8D155','#64495D','#7CC767','#223D6C','#D20A13','#FFD121','#088247','#11AA4D','#58CDD9','#7A142C','#5D90BA','#0

如果想使⽤⽂章中的颜⾊,可将mycol变量赋值给scale_fill_manual(values = mycol);同时不想让stratum周围显⽰⽩⾊的“空⽩”,可将geom_flow()的width设为⼩于0.2的值, 得到效果如下:

其实我之前⼀直不喜欢这个图,因为颜⾊太多,可是看久了也就不觉得难看了。如果喜欢“直”的,可将knot.pos 的数值调为0,得到下图的效果:

今天的内容就到这⾥啦,如果你还是没学会,可以考虑报名我们的转录组培训班呀~

培训时间:2019年12⽉9⽇-12⽉13⽇

培训地点:基迪奥公司(⼴州⼤学城青蓝街)

转录组培训班是基迪奥“元⽼级”的精品培训班。随着测序技术的发展,基迪奥项⽬经验的积累,我们已将转录组培训班的培训内容更新到了4.0版本。专题理论实操:数据范例灵活,学员可以带上⾃⼰的转录组数据进⾏实操,解答数据挖掘问题;

多组学进阶提升:培训班在讲解转录组数据挖掘的基础上,拓展转录组与其他组学的多组学关联分析和数据挖掘;

数据的动态挖掘:基于基迪奥特有的在线平台Omicsmart的动态数据挖掘,学员可以完成个性化分析,定制专属结题报告。

参与培训的学员将获得价值2400元的6例样本数据的动态交互平台Omicsmart分析使⽤权,可随⼼所欲地对⾃⼰的原始数据进⾏个性化分析! 课程表

因篇幅问题不能全部显示,请点此查看更多更全内容