大数跨境
0
0

NC图表复现-ggplot2优雅绘制热图(基础入门版)

NC图表复现-ggplot2优雅绘制热图(基础入门版) R语言数据分析指南
2025-06-06
2

本节继续来通过NC上的论文介绍常规热图的绘制,数据为论文提供数据,小编根据个人对图形的进行代码编写,结果与原文有所不同,个人观点仅供参考。有需要学习R语言绘图的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。

论文信息

Interspecies hydrogen transfer between cyanobacteria and symbiotic bacteria drives nitrogen lossKong, L., Feng, Y., Zheng, R. et al. Interspecies hydrogen transfer between cyanobacteria and symbiotic bacteria drives nitrogen loss. Nat Commun 16, 5078 (2025). https://doi.org/10.1038/s41467-025-60327-x

原图

仿图

图形解读

此图作为基础版热图,无过多内容可介绍,绘制此图主要在于数据转换如何绘制注释条带,基于此使用分面的形式来进行分组条带的设置,通过将分组文本添加到条带内展示减少图片空间。难度系数一般,属于进阶学习案例。

代码展示

# 加载R包
library(tidyverse)
library(readxl)
library(ggh4x)
library(ggtext)

数据整合

df <- read_excel("41467_2025_60327_MOESM6_ESM.xlsx",sheet ="Fig.6e") %>% 
  select(1:59) %>% 
  pivot_longer(-c(Gene,group2)) %>% 
  mutate(name=str_replace_all(name,"WW","W")) %>% 
  left_join(.,read_tsv("group.tsv") %>% 
              mutate(Sample=str_replace_all(Sample,"WW","W")),
            by=c("name"="Sample"))
# 定义因子
df$name <- factor(df$name,levels = unique(df$name))
df$Gene <- factor(df$Gene,levels = rev(unique(df$Gene)))
df$group <- factor(df$group,levels = unique(df$group))
df$group2 <- factor(df$group2,levels = unique(df$group2))

# 分面条带颜色
strips <- strip_themed(
  background_y = 
    elem_list_rect(fill=c("#EC7A05","#9AC2CD99","#82B7F590","#5A77D190",
                                       "#FAD77B","#16419480")),
  background_x=elem_list_rect(fill=c("#5A77D1","#44007A","#9AC2CD","#6B9B3C",
                                     "#82B7F5")))

热图绘制

ggplot(df,aes(name,Gene,fill=value))+
  geom_tile(color="grey80")+
  facet_grid2(group2~group,scale="free",
              switch="y",strip=strips) +
  force_panelsizes(cols=c(13,13,9,12,10),
                   rows = c(4,6,3,5,5,3),respect=F)+
  scale_x_discrete(expand = c(0,0),
                   position = "top")+
  scale_y_discrete(expand = c(0,0))+
  scale_fill_gradientn(
    colors = c("white""#e0f3f3""#66b2a3""#004c4c""black"),
    values = scales::rescale(c(00.010.60.951.01)),
    limits = c(01),
    oob = scales::squish,
    breaks = c(00.30.60.91),
    labels = c("0.0""0.3""0.6""0.9"">1.0")
  )+
  labs(x=NULL,y=NULL) +
  coord_cartesian(clip="off") +
  theme_test() +
  theme(axis.text.x=
          element_text(color="black",angle = 45,
                       vjust=0.5,hjust =0,size=7),
        axis.text.y=element_text(color="black",size=7),
        strip.placement = "outside",
        axis.ticks = element_blank(),
        panel.spacing.x = unit(0,"cm"),
        panel.spacing.y = unit(0,"cm"),
        strip.text.x = 
          element_text(color="white",size=10,face="bold"),
        strip.text.y = element_markdown(color="black",size=7),
        strip.background = element_rect(color="white"),
        legend.background = element_blank(),
        legend.title = element_blank(),
        legend.key.height = unit(1,"null"))

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

购买介绍

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

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

案例特点

所选案例图绝大部份属于个性化分析图表,数据案例多来自已经发表的高分论文,并会汇总整理分享一些论文中公开的分析代码。
2025年起提供更加专业的html文档,更加的直观易学。文档累计上千人次购买拥有良好的社群交流体验,R代码结构清晰易懂.

目录大纲展示

群友精彩评论

淘宝店铺

2025年更新案例图展示

)

2024年案例图展示


【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读222
粉丝0
内容1.2k