现在许多文章都利用桑基图来展示ceRNA网络、功能富集等图,也有很多R包专门可以用来画桑基图,不过小编在这里发现ggplot2包非常强大,也可以画桑基图,现在来给大家介绍一下 ###########加载 library(ggplot2) library(ggalluvial) library(RColorBrewer) 这里以miRNA-mRNA的关系为例,数据格式如下
##########整合 miRNA_mRNA$Freq=1#定义纵坐标,一般默认为1
miRNA_mRNA_long<- to_lodes_form(miRNA_mRNA, axes = 1:2,#将miRNA和mRNA分别编号 id = 'Cohort') #改为长数据便于画图
下面就可以开始画桑基图了,主要需要ggplot的geom_flow和geom_stratum两个函数###########geom_flow ggplot(miRNA_mRNA_long, aes(x =factor(x,level = c('miRNA','SYMBOL')),y=Freq,stratum = stratum, alluvium = Cohort,fill = stratum, label =stratum)) + geom_flow( width = 1/3)+#画流动图 geom_text(stat ='stratum' , size =3) +#添加名字 scale_x_discrete(limits = c() )+#去掉横坐标轴 theme_bw()+#定义主题 theme(legend.position = 'none', axis.title = element_blank(), axis.text.y= element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank())+ scale_fill_manual(values = colorRampPalette(brewer.pal(8, 'Accent'))(20))#定义颜色
###########geom_stratum ggplot(miRNA_mRNA_long, aes(x =factor(x,level = c('miRNA','SYMBOL')),y=Freq,stratum = stratum, alluvium = Cohort,fill = stratum, label =stratum)) + geom_stratum( width = 1/3,linetype=1,size=0.5,alpha =0.5,color = 'black') +#画冲击图 geom_text(stat ='stratum' , size =3) +#添加名字 scale_x_discrete(limits = c() )+#去掉横坐标轴 theme_bw()+#定义主题 theme(legend.position = 'none', axis.title = element_blank(), axis.text.y= element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank())+ scale_fill_manual(values = colorRampPalette(brewer.pal(8, 'Accent'))(20))#定义颜色
###########绘图 ggplot(miRNA_mRNA_long, aes(x =factor(x,level = c('miRNA','SYMBOL')),y=Freq,stratum = stratum, alluvium = Cohort,fill = stratum, label =stratum)) + geom_flow( width = 1/3)+#画流动图 geom_stratum( width = 1/3,linetype=1,size=0.5,alpha =0.5,color = 'black') +#画冲击图 geom_text(stat ='stratum' , size =3) +#添加名字 scale_x_discrete(limits = c() )+#去掉横坐标轴 theme_bw()+#定义主题 theme(legend.position = 'none', axis.title = element_blank(), axis.text.y= element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank())+#去掉边界线 scale_fill_manual(values = colorRampPalette(brewer.pal(8, 'Accent'))(20))#定义颜色
###########绘图 ggplot(miRNA_mRNA_long, aes(x =factor(x,level = c('miRNA','SYMBOL')),y=Freq,stratum = stratum, alluvium = Cohort,fill = stratum, label =stratum)) + geom_flow( width = 1/3)+#画流动图 geom_stratum( width = 1/3,linetype=0,size=0.5,alpha =0.5,color = 'black') +#画冲击图 geom_text(stat ='stratum' , size =3) +#添加名字 scale_x_discrete(limits = c() )+#去掉横坐标轴 theme_bw()+#定义主题 theme(legend.position = 'none', axis.title = element_blank(), axis.text.y= element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_blank())+#去掉边界线 scale_fill_manual(values = colorRampPalette(brewer.pal(8, 'Accent'))(20))#定义颜色
|