美文网首页
什么!绘制桑基图也有傻瓜式的操作啦?教你提升Figure的丰富度

什么!绘制桑基图也有傻瓜式的操作啦?教你提升Figure的丰富度

作者: 生信大碗 | 来源:发表于2023-11-06 09:29 被阅读0次

在生信文章中,我们经常会见到看起来很赛博朋克的桑基图——丰富色彩的虚实结合,高级感满满。如图1,一些ceRNA网络相关的文献就会用桑基图来直观的展示lncRNA、miRNA、mRNA的关系。

图1

那么,如何在R中绘制桑基图呢?我们废话不多说,上代码。

首先,安装并加载所需的R包:

####使用ggplot2包与ggalluvial包绘制桑基图####

# 1.安装包----

install.packages("ggplot2")

install.packages("ggalluvial")

install.packages("dplyr")

# 2.加载包----

library(ggplot2)

library(ggalluvial)

library(dplyr)

然后,加载示例数据:

# 3.加载数据 (私信领取示例数据) ----

load("桑基图示例数据.rdata")

str(data)

图2

我们先来看一下示例数据的结构,这是一个40行*3列的数据框。

图3

每一行表示一个样本,第一列是样本所属亚组、第二列是样本风险评分高低、第三列是样本的生存状态。

接下来,需要对数据进行转换:

# 4.数据转换----

convertion <- to_lodes_form(data,

                       axes = 1:ncol(data),

                       key = "x",

                       value = "stratum",

                       id = "alluvium")

上面这几行代码同学们拿去用的时候,只要将代码中的data修改成你自己的数据的对象名即可。学有余力的同学可以仔细研究一下其中的参数。

最后,只需闭眼运行以下代码,就可以得到如图4的图形了:

# 5.绘制图形----

pdf(file="桑基图.pdf",width=8,height=6)

color <- c("#9079ad","#7ebea5","#d8a373","#f09199","#8d6449","#4c6cb3","#fef263","#ce5242")

ggplot(convertion,

       aes(x = x, stratum = stratum, alluvium = alluvium,fill = stratum, label = stratum))+

  scale_fill_manual(values = color)+

geom_flow(width = 0.4,aes.flow = "forward")+ #forward:线条颜色去前面的列保持一致,“backward”则与后面的列一致

  geom_stratum(alpha =0.8,width = 0.4)+

  geom_text(stat = "stratum", size = 5,color="black",family="serif")+

  theme_classic()+

  theme(axis.line = element_blank(),axis.ticks = element_blank(),axis.text.y = element_blank())+

  theme(panel.grid =element_blank())+

  theme(panel.border = element_blank())+

  theme(axis.text.x = element_text(size = 15,family="serif",colour = "black"))+

  xlab("")+

  ylab("")+

  ggtitle("")+

  guides(fill = "none")                      

dev.off()

图4

今天的分析到这里就结束了。是不是很简单呢?快去试一试吧!

相关文章

网友评论

      本文标题:什么!绘制桑基图也有傻瓜式的操作啦?教你提升Figure的丰富度

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