打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
桑基图
现在许多文章都利用桑基图来展示ceRNA网络、功能富集等图,也有很多R包专门可以用来画桑基图,不过小编在这里发现ggplot2包非常强大,也可以画桑基图,现在来给大家介绍一下
首先加载需要的R包
###########加载
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--画流动图
我们看一下只画geom_flow的效果

###########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_flow--画流动图
我们看一下只画geom_stratum的效果
###########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))#定义颜色

改变边框模式linetype

###########绘图
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))#定义颜色
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
如何用ggalluvial绘制ceRNA网络图?
ggplot文字标签设置(geom_text_repel函数)的一个小例子
coord_polar极坐标变换
R语言ggplot2 | 循环画图及导出
昨晚熬夜整理的超级R绘图技巧——USing ggplot(下)
R语言社区检测算法可视化网络图:ggplot2绘制igraph对象分析物种相对丰度
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服