跟着Oncogene学作图:R语言gggenomes画桑基图

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 跟着Oncogene学作图:R语言gggenomes画桑基图

论文

Single-cell RNA sequencing reveals distinct tumor microenvironmental patterns in lung adenocarcinoma

https://www.nature.com/articles/s41388-021-02054-3

这个是公众号读者的留言,问下图如何实现

image.png

论文中没有提供数据和代码,我们简单构造一个示例数据,然后代码自己写

这个图可以用桑基图的画法来做,之前的推文介绍了两个桑基图的做法

今天的推文介绍一下gggenomes这个R包,这个是用来做基因组共线性的图的,但是共线性和桑基图看起来效果是一样的,所以桑基图也可以用这个来做

github主页

https://github.com/thackl/gggenomes

安装代码

devtools::install_github("thackl/gggenomes")

安装过程会更新很多R包,会遇到一些报错,自己搜索报错提示信息应该能够解决

首先是一个简单的小例子

示例数据

image.png

读取数据作图

library(readxl)
library(gggenomes)

df<-read_excel("gggenomes_examples.xlsx",
               sheet="Sheet1")
df
gggenomes(genes = df)+
  geom_gene()

gggenomes(genes = df)+
  geom_gene(shape=0,aes(fill=group))

image.png

添加两个图之间的阴影

image.png

dflink<-read_excel("gggenomes_examples.xlsx",sheet = "Sheet2")
dflink
gggenomes(genes = df,links = dflink)+
  geom_link(offset = 0.05,aes(fill=group2))+
  geom_gene(shape=0,aes(fill=group),size=5)+
  theme(legend.position = "none")

image.png

接下来是模仿论文中的那个图

示例数据

image.png

读取数据并作图

dflink<-read_excel("gggenomes_examples.xlsx",sheet = "Sheet2")
dflink
gggenomes(genes = df,links = dflink)+
  geom_link(offset = 0.05,aes(fill=group2))+
  geom_gene(shape=0,aes(fill=group),size=5)+
  theme(legend.position = "none")

df3<-read_excel("gggenomes_examples.xlsx",
                sheet = "Sheet3")
df3


df3 %>% 
  filter(seq_id=="Normal") %>% 
  mutate(length=end-start+1) -> dflink01

df3 %>% 
  filter(seq_id=="Tumor") %>% 
  mutate(length=end-start+1) -> dflink02

bind_cols(dflink01,dflink02) -> dflinks
colnames(dflinks)<-c(c("seq_id","start","end","group",'length'),
                     paste0(c("seq_id","start","end","group",'length'),2))
dflinks
gggenomes(genes=df3,links = dflinks)+
  geom_bin_label(size=5)+
  geom_link(aes(fill=group),offset = 0.3)+
  geom_gene(aes(fill=group),shape=0,
            size=10)+
  theme(legend.position = "none",
        axis.line.x = element_blank(),
        axis.ticks.x=element_blank(),
        axis.text.x = element_blank())+
  xlim(-15,100)+
  scale_fill_manual(values =as.vector(tidyquant::palette_dark()))+
  annotate(geom = "segment",
           x=0,xend = 100,y = 0.5,yend=0.5)+
  geom_segment(data=data.frame(x=c(0,50,100),
                               xend=c(0,50,100),
                               y=c(0.5,0.5,0.5),
                               yend=c(0.4,0.4,0.4)),
               aes(x=x,xend=xend,y=y,yend=yend),
               inherit.aes = FALSE)+
  geom_text(data=data.frame(x=c(0,50,100),
                            y=c(0.4,0.4,0.4),
                            label=c("0.0",'0.5','1.0')),
            aes(x=x,y=y,label=label),vjust=1)

image.png

最后是制作封面图

gggenomes(genes=df3,links = dflinks)+
  geom_bin_label(size=5)+
  geom_link(aes(fill=group),offset = 0.3)+
  geom_gene(aes(fill=group),shape=0,
            size=10)+
  theme(legend.position = "none",
        axis.line.x = element_blank(),
        axis.ticks.x=element_blank(),
        axis.text.x = element_blank())+
  xlim(-15,100)+
  scale_fill_manual(values =as.vector(tidyquant::palette_dark()))+
  annotate(geom = "segment",
           x=0,xend = 100,y = 0.5,yend=0.5)+
  geom_segment(data=data.frame(x=c(0,50,100),
                               xend=c(0,50,100),
                               y=c(0.5,0.5,0.5),
                               yend=c(0.4,0.4,0.4)),
               aes(x=x,xend=xend,y=y,yend=yend),
               inherit.aes = FALSE)+
  geom_text(data=data.frame(x=c(0,50,100),
                            y=c(0.4,0.4,0.4),
                            label=c("0.0",'0.5','1.0')),
            aes(x=x,y=y,label=label),vjust=1) -> p1

gggenomes(genes=df3,links = dflinks)+
  geom_bin_label(size=5)+
  geom_link(aes(fill=group),offset = 0.3)+
  geom_gene(aes(fill=group),shape=0,
            size=10)+
  theme(legend.position = "none",
        axis.line.x = element_blank(),
        axis.ticks.x=element_blank(),
        axis.text.x = element_blank())+
  xlim(-15,100)+
  scale_fill_manual(values =as.vector(tidyquant::palette_light())) -> p2

library(patchwork)

p2/p1

image.png

公众号 小明的数据分析笔记本 有获取示例数据和代码的方式

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
数据可视化 数据挖掘 Python
跟着NatureCommunications学作图:R语言ggtree根据分组给进化树上色
跟着NatureCommunications学作图:R语言ggtree根据分组给进化树上色
|
数据可视化 数据挖掘 Python
跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图
跟着NatureMetabolism学作图:R语言ggplot2转录组差异表达火山图
|
数据可视化 数据挖掘 Python
跟着GlobalChangeBiology学作图:R语言ggplot2点线图(2)给分面添加注释
跟着GlobalChangeBiology学作图:R语言ggplot2点线图(2)给分面添加注释
|
数据可视化 数据挖掘 Python
跟着NatureMetabolism学作图:R语言ggplot2画热图展示基因表达量
跟着NatureMetabolism学作图:R语言ggplot2画热图展示基因表达量
|
数据可视化 数据挖掘 Python
跟着Nature Metabolism学作图:R语言ggplot2散点图
跟着Nature Metabolism学作图:R语言ggplot2散点图
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggtree给进化树的节点添加饼状图
跟着Nature学作图:R语言ggtree给进化树的节点添加饼状图
|
数据可视化 数据挖掘 Python
跟着Nature Communications学作图:R语言ggplot2画图展示捐赠者的临床概况
跟着Nature Communications学作图:R语言ggplot2画图展示捐赠者的临床概况
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggplot2散点栅格化能够减小输出pdf的文件大小
跟着Nature学作图:R语言ggplot2散点栅格化能够减小输出pdf的文件大小
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggplot2 Figure3 堆积柱形图和簇状柱形图
跟着Nature学作图:R语言ggplot2 Figure3 堆积柱形图和簇状柱形图
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。