前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature microbiology学作图:R语言ggplot2堆积柱形图以及拼图

跟着Nature microbiology学作图:R语言ggplot2堆积柱形图以及拼图

作者头像
用户7010445
发布2023-08-23 10:45:39
3380
发布2023-08-23 10:45:39
举报
文章被收录于专栏:小明的数据分析笔记本

论文

A high-quality genome compendium of the human gut microbiome of Inner Mongolians

https://www.nature.com/articles/s41564-022-01270-1

2023Naturemicrobiology--Ahigh-qualitygenomecompendiumofthehumangutmicrobiomeofInnerMongolians4.pdf

论文中大部分作图数据都有,争取把论文中的图都复现一下

今天的推文我们试着复现一下论文中的Figure2d

image.png

部分示例数据截图

image.png

数据预处理

将数据分成两个部分,一个部分用于话朝左的柱形图,一个部分用于画朝右的堆积柱形图

代码语言:javascript
复制
library(tidyverse)
library(readxl)
dat<-read_excel("data/20230305/41564_2022_1270_MOESM5_ESM.xlsx",
                sheet = "Fig2d")
dat %>% colnames()

dat %>% 
  filter(Species != "Escherichia coli_D") %>% 
  mutate(IMGG_MIMAG_HQ=-IMGG_MIMAG_HQ) %>% 
  select(IMGG_MIMAG_HQ,Species) -> dat.01

head(dat.01)
dim(dat.01)

dat %>% 
  filter(Species != "Escherichia coli_D") %>% 
  
  select(UHGG_isolate_MIMAGHQ_genome,
         UHGG_MAG_MIMAGHQ_genome,
         Species) %>% 
  pivot_longer(!Species) -> dat.02

作图代码

这里图例的处理方式是单独构造一个画图例的数据作图,然后在图中把图例提取出来插入到完整的图中

代码语言:javascript
复制
legend.df<-data.frame(group=c("A","B","D"),
                      x=1,
                      y=c(1,1,1))
ggplot(data=legend.df,aes(x=x,y=y))+
  geom_bar(aes(fill=group),stat="identity")+
  scale_fill_manual(values = c("#61ab97","#7c9bc7","#a2c0d9"),
                    labels=c("IMGG HQ-MIMAG",
                             "UHGG HQ-MIMAG (isolate)",
                             "UHGG HQ-MIMAG (MAG)"),
                    name=NULL)+
  theme(legend.background = element_rect(fill="transparent"))-> legend.p

ggpubr::get_legend(legend.p)
  
ggplot()+
  geom_col(data=dat.01,
           aes(x=IMGG_MIMAG_HQ,y=Species),
           fill="#61ab97")+
  geom_bar(data=dat.02,
           aes(x=value,y=Species,
               fill=name),
           stat="identity")+
  scale_fill_manual(values = c("#7c9bc7","#a2c0d9"))+
  theme_bw()+
  theme(panel.grid = element_blank(),
        legend.position = "none")+
  scale_x_continuous(breaks = c(-100,0,100,200),
                     labels=c(100,0,100,200))+
  labs(x="Number of genomes",y=NULL)+
  annotation_custom(grob = ggpubr::get_legend(legend.p),
                    xmin = 120,xmax = 120,
                    ymin = 30,ymax=30) -> p1
p1

image.png

然后是顶部的图

代码语言:javascript
复制
dat %>% 
  filter(Species == "Escherichia coli_D") %>% 
  select(-MAG_ID,-Total) %>% 
  pivot_longer(!Species) %>% 
  ggplot(aes(x=value,y=Species,fill=name))+
  geom_bar(stat="identity")+
  scale_fill_manual(values = rev(c("#61ab97","#7c9bc7","#a2c0d9")))+
  theme_bw()+
  theme(legend.position = "none",
        panel.grid = element_blank())+
  labs(x=NULL,y=NULL) -> p2

p2

最后将两个图拼到一起

代码语言:javascript
复制
library(patchwork)
p2+p1+
  plot_layout(ncol = 1,heights = c(1,49))

image.png

image.png

推文记录的是自己的学习笔记,内容可能会存在错误,请大家批判着看,欢迎大家指出其中的错误

示例数据和代码可以给推文打赏1元获取

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • 部分示例数据截图
  • 数据预处理
  • 作图代码
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档