前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature microbiology学作图:R语言ggplot2热图展示离散数据

跟着Nature microbiology学作图:R语言ggplot2热图展示离散数据

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

论文

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

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

今天的推文我们试着复现一下论文中的Figure4C 下半部分的热图

image.png

部分示例数据截图

image.png

读取数据

代码语言:javascript
复制
library(readxl)
library(tidyverse)

fig4cb<-read_excel("D:/R_4_1_0_working_directory/env001/data/20230305/41564_2022_1270_MOESM7_ESM.xlsx",
                   sheet = "Fig 4c bottom",
                   col_types = "text")
fig4cb %>% dim()
fig4cb

colnames(fig4cb)[1]<-"y"
colnames(fig4cb)[-1]
fig4cb

宽格式转换为长格式数据

代码语言:javascript
复制
fig4cb %>% 
  pivot_longer(!y,names_to = "x") %>% 
  mutate(y=factor(y,levels = fig4cb %>% pull(y) %>% rev()),
         x=factor(x,levels = colnames(fig4cb)[-1])) -> new.fig4cb

构造右侧的颜色条数据

代码语言:javascript
复制
df<-data.frame(x=16,xend=16,
               y=c(0.6,1.6,2.6,3.6,4.6,5.6,8.6),
               yend=c(1.4,2.4,3.4,4.4,5.4,8.4,20.4),
               group=c("A","B","D","E","F","G","H"))

作图代码

代码语言:javascript
复制
p1<-ggplot(data = new.fig4cb,aes(x=x,y=y))+
  geom_tile(aes(fill=value),
            color="white",
            width=0.8,height=0.8)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        panel.border = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x = element_text(angle = 60,
                                   hjust=1,vjust = 1),
        legend.position = "bottom",
        legend.box = "vertical")+
  guides(color=guide_legend(nrow = 1,title.position = "top",
                            title.hjust = 0.5),
         fill=guide_legend(title.position = "top",
                           title.hjust = 0.5))+
  scale_fill_manual(values = c("0"="#eaeaea",
                               "1"="#8fb3d3",
                               "2"="#699bc3",
                               "3"="#4682b4"),
                    breaks = c("3","2","1","0"),
                    labels=c("100","50-90","0-50","0"),
                    name="The prevalence of\nSCFA MGC (%)")+
  coord_equal()+
  labs(x=NULL,y=NULL)+
  scale_y_discrete(position = "right")+
  geom_segment(data=df,
               aes(x=x,xend=xend,y=y,yend=yend,
                   color=group),
               size=5)+
  scale_color_manual(values = c("#606060","#3a75a7","#cb1a00",
                                "#9c6586","#ff9309","#4682b4",
                                "#ce8889"),
                     name="Order")

p1

image.png

上侧的图思路也是一样的

代码

代码语言:javascript
复制
fig4ct<-read_excel("D:/R_4_1_0_working_directory/env001/data/20230305/41564_2022_1270_MOESM7_ESM.xlsx",
                   sheet = "Fig 4c top",
                   col_types = "text")
fig4ct %>% dim()
fig4ct

colnames(fig4ct)[1]<-"y"
colnames(fig4ct)[-1]
fig4ct

fig4ct %>% 
  pivot_longer(!y,names_to = "x") %>% 
  mutate(y=factor(y,levels = fig4ct %>% pull(y) %>% rev()),
         x=factor(x,levels = colnames(fig4ct)[-1])) -> new.fig4ct



p2<-ggplot(data = new.fig4ct,aes(x=x,y=y))+
  geom_tile(aes(fill=value),
            color="white",
            width=0.8,height=0.8,
            show.legend = FALSE)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        panel.border = element_blank(),
        axis.ticks = element_blank(),
        axis.text.x = element_text(angle = 60,
                                   hjust=1,vjust = 1))+
  scale_fill_manual(values = c("0"="#eaeaea",
                               "1"="#8fb3d3",
                               "2"="#699bc3",
                               "3"="#4682b4"),
                    breaks = c("3","2","1","0"))+
  coord_equal()+
  labs(x=NULL,y=NULL)+
  scale_y_discrete(position = "right")

p2

image.png

把两个图拼到一起

代码语言:javascript
复制
library(patchwork)  

p2+p1+
  plot_layout(guides = "collect")+
  plot_annotation(theme = theme(legend.position = "bottom",
                                legend.box = "vertical"))

image.png

推文记录的是自己的学习笔记,很可能存在错误,请大家批判着看

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

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

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

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

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