前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature Communications学作图:R语言ggplot2热图(heatmap)并添加文字标签

跟着Nature Communications学作图:R语言ggplot2热图(heatmap)并添加文字标签

作者头像
用户7010445
发布2023-01-06 19:32:42
9410
发布2023-01-06 19:32:42
举报

论文

MiDAS 4: A global catalogue of full-length 16S rRNA gene sequences and taxonomy for studies of bacterial communities in wastewater treatment plants

https://www.nature.com/articles/s41467-022-29438-7

数据链接

https://figshare.com/articles/dataset/Dueholm2021a_data_zip/16566408/1

代码链接

https://github.com/msdueholm/MiDAS4

今天的推文重复一下论文中的Figure4b ggplot2做热图并添加文本标签

image.png

论文中没有直接提供这个作图数据,需要运行一系列代码获得,这里我不介绍前面获取作图数据的代码了,感兴趣的可以自己去找来代码试试,如果运行的话需要比较大的内存

加载需要用到的R包

代码语言:javascript
复制
library(ggplot2)
library(readr)
library(tidyverse)
library(stringr)

部分示例数据集截图

image.png

用来调节因子水平的文本我也放到了一个文件里

image.png

作图代码

代码语言:javascript
复制
df1<-read_csv("fig4b1.csv")
df1$Genus<-factor(df1$Genus,
                  levels = readLines("fig4b1_levels.txt"))
fig4b1face<-ifelse(str_starts(readLines("fig4b1_levels.txt"),"m|CL|Ca"),
                   "plain","italic")
p1 <- ggplot(df1, aes(Amplicon, Genus)) +
  geom_tile(aes(fill = Abundance)) + 
  geom_text(aes(label = round(Abundance, 2))) +
  scale_fill_gradientn(colors = rev(
    c("#a50026","#d73027", "#f46d43", "#fdae61",
               "#fee090","#ffffbf","#e0f3f8",
               "#abd9e9","#74add1","#4575b4","#313695")),
               trans = "log10",
    breaks = c(0.001, 0.01, 0.1, 1), 
    limits=c(0.001,1),
    name="Relative\nabundance(%)") +
  theme_bw()+
  labs(x=NULL,y=NULL)+
  theme(axis.text.y = element_text(face=fig4b1face))
p1

image.png

这里一个小知识点是y轴的文本标签有斜体有正常字体,这个是可以设置theme(axis.text.y = element_text(face=fig4b1face))face的值是可以设置多个的,但是会有警告信息,可以忽略

第二个图的示例数据和代码都是一样的

代码语言:javascript
复制
df2<-read_csv("fig4b2.csv")


df2$Genus <-factor(df2$Genus,
                   levels = readLines("fig4b2_levels.txt"))
fig4b2face<-ifelse(str_starts(readLines("fig4b2_levels.txt"),"mi|Ag|BD|SH"),
                   "plain","italic")

p2 <- ggplot(df2, aes(Amplicon, Genus)) +
  geom_tile(aes(fill = Abundance)) + 
  geom_text(aes(label = round(Abundance, 2))) +
  scale_fill_gradientn(colors = rev(
    c("#a50026", "#d73027", "#f46d43", "#fdae61",
               "#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1",
               "#4575b4","#313695")), 
               trans = "log10",, 
    breaks = c(0.001, 0.01, 0.1, 1),
    limits=c(0.001,1),
    name="Relative\nabundance(%)") +
  theme_bw()+
  labs(x=NULL,y=NULL)+
  theme(axis.text.y = element_text(face=fig4b2face))
p2

image.png

最后是拼图

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

p1+
  coord_flip()+
  theme(axis.text.x = element_text(angle=60,
                                   vjust=1,hjust=1),
        legend.position = "top")+
  guides(fill=guide_legend(title.position = "top"))-> p1.1
p2+
  coord_flip()+
  theme(axis.text.x = element_text(angle=60,
                                   vjust=1,hjust=1),
        legend.position = "top") +
  guides(fill=guide_legend(title.position = "top"))-> p2.1
p1.1/p2.1 +  plot_layout(guides = "collect")+
  plot_annotation(theme = theme(legend.position = "top",
                                legend.direction = "horizontal"))
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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