大数跨境
0
0

Nature同款热图绘制|多层嵌套注释的代码实现

Nature同款热图绘制|多层嵌套注释的代码实现 Angela的外贸日常
2025-10-19
6

欢迎关注R语言数据分析指南

本节将通过Nature上的一篇新论文,带大家认识一类带有多层嵌套注释、风格稍有特色的热图。论文作者提供了图表对应的数据与代码,但小编在实测后发现——原代码并不能直接复现论文中的图表。于是,小编对代码进行了多处调整与优化,最终实现了高保真复刻,并在部分细节上略有改动。本文仅代表个人理解与实现方式,供大家参考与学习。有需要学习R语言绘图的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。

论文信息

Proteotoxic stress response drives T cell exhaustion and immune evasion

Wang, Y., Ma, A., Song, NJ. et al. Proteotoxic stress response drives T cell exhaustion and immune evasion. Nature (2025). https://doi.org/10.1038/s41586-025-09539-1

论文代码

https://zenodo.org/records/16413641,不知道为啥作者即然选择了提供分析代码,但却只给了fig1的代码。

论文原图

常规的热图基本都是使用直角色块来进行填充,但是此图则是通过geom_shape来定义色块的角度使其显得圆润些,不愧是nature论文就是讲究,除此之外此图还设置了双层条带注释,直观明了。

实际运行论文所提供的代码,结果却如下所示

library(readxl)
library(tidyverse)
library(dplyr)
library(ggforce)

gggplot(df_long, aes(x = Sample, y = Pathway, fill = Score)) +
  geom_shape(
    #  aes(x0 = as.numeric(Sample), y0 = as.numeric(Pathway)),
    radius = unit(0.2"cm"),
    expand = unit(0.32"cm")
    # corner = 0.25,
    # shape = 1L
  ) +
  scale_fill_gradient2(low = "#69AADB", mid = "white", high = "#D45590", midpoint = 0) +
  theme_minimal(base_size = 10) +
  theme(
    axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
    axis.text.y = element_text(size = 10),
    axis.title = element_blank(),
    panel.grid = element_blank()
  )

跟原图比较可以发现主要是顶部的注释条带没有添加,那由此推测这部分内容可能是非代码生成后期添加的。但是若要通过代码来实现此部分内容那也是可以实现的,之前小编已经通过多篇文章介绍过legendry包添加注释条带的方法,但是此图与之前的案例稍微有所不同,该图是嵌套式注释条带,因此还是需要稍微修改一番代码的。下面是小编根据原图调整代码后生成的图,可以看到已经非常接近原图了。

仿图

那么绘制这个图最大的难点是在哪里呢

现成的代码是没有的
论文提供的代码是无法实现的
无论是微调代码还是后期AI编辑都是要费心的
从数据整理到注释条带添加怎么来的
怎么调整数据,定义图层,设定参数的
怎么考虑样本顺序与注释条带添加,配色、角度、主题这些细节的
怎么一步步去完成这些步骤的
这份代码是值得学习的

关注下方公众号下回更新不迷路

购买介绍

本节介绍到此结束,有需要学习R数据可视化的读者欢迎到淘宝店铺:R语言数据分析指南,购买小编的R语言可视化文档,2025年购买将获取2025年更新的绘图内容,同时将赠送2024年的绘图文档内容,其余内容无

更新的绘图内容包含数据+代码+注释文档+文档清单,小编只分享案例文档,不额外回答问题,无答疑服务,更新截止2025年12月31日结束,后续不在进行任何更新,零基础基础一般不推荐买。

在线目录大纲

淘宝店铺

2025年更新案例图展示

【声明】内容源于网络
0
0
Angela的外贸日常
跨境分享间 | 长期积累专业经验
内容 45910
粉丝 1
Angela的外贸日常 跨境分享间 | 长期积累专业经验
总阅读239.6k
粉丝1
内容45.9k