大数跨境
0
0

nature medicine同款极坐标热图绘制

nature medicine同款极坐标热图绘制 R语言数据分析指南
2025-10-02
1

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

本节来通过nature medicine上的一篇论文,来介绍一类常规极坐标热图画法。论文提供了图表对应的数据,小编根据论文图表来进行了数据整理并绘图,结果与原文有所不同,个人观点仅供参考。有需要学习R语言绘图的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。

论文信息

Interplay of genetic predisposition, plasma metabolome and Mediterranean diet in dementia risk and cognitive functionLiu, Y., Gu, X., Li, Y. et al. Interplay of genetic predisposition, plasma metabolome and Mediterranean diet in dementia risk and cognitive function. Nat Med (2025). https://doi.org/10.1038/s41591-025-03891-5

原图

仿图

图形解读

该图作为基础图内容无需过多介绍,绘制此图主要在于各部分的组合及一些细节的调整。本次代码通过将3部分拆分的方式来进行绘图,通过这种方式的组合来达到符合论文原图的展示效果。难度系数较低,适合入门学习。

代码展示

library(tidyverse)
library(readxl)
library(geomtextpath)
library(ggnewscale)
library(RColorBrewer)
library(ggtext)

# 数据处理
df <- read_excel("41591_2025_3891_MOESM5_ESM.xlsx",sheet=1) %>% 
  arrange(super_class_metabolon) %>%
  mutate(metabolite_name = str_extract(metabolite_name, "^[^/]+"))
# 格式转换
dff <- df %>% select(-1) %>% 
  mutate(mean_abundance=log10(mean_abundance),
         cv=log10(cv)) %>% 
  mutate(mean_abundance=as.character(mean_abundance),
         cv=as.character(cv)) %>% 
  pivot_longer(-c("metabolite_name")) %>% arrange()

# 定义因子
dff$name <- factor(dff$name,levels = c("super_class_metabolon","mean_abundance","cv"))

dff$metabolite_name <- factor(dff$metabolite_name,levels = unique(df$metabolite_name))

# 数据可视化
dff %>% ggplot(.,aes(metabolite_name,name)) +
  geom_line(data=dff %>% filter(name=="super_class_metabolon") %>% 
              dplyr::rename("Superclass of metabolites"=value),
            aes(color=`Superclass of metabolites`,
                group=`Superclass of metabolites`),linewidth=4) +
  scale_color_manual(values = brewer.pal(12,"Paired"),
                     guide=guide_legend(position = "inside",order = 3)) +
  geom_tile(data=dff %>% filter(name=="mean_abundance") %>% 
              mutate(value=as.numeric(value)) %>% 
              dplyr::rename("log<sub>10</sub>[mean abundance (%)]"=value),
            aes(fill=`log<sub>10</sub>[mean abundance (%)]`,y=1.7),color = NA) +
  scale_fill_gradientn(colors=colorRampPalette(brewer.pal(9,"Blues")[1:5])(50),
                       guide=guide_colourbar(position = "inside",
                                             direction = "horizontal",
                                             barheight = 1,
                                             barwidth  = 10,
                                             order = 1)) +
  new_scale_fill() +
  geom_tile(data=dff %>% filter(name=="cv") %>%
              mutate(value=as.numeric(value)) %>% 
              dplyr::rename("log<sub>10</sub>(coefficient of variation)"=value),
            aes(fill=`log<sub>10</sub>(coefficient of variation)`,
                y=2.9),color = NA) +
  scale_fill_gradientn(colors=colorRampPalette(brewer.pal(9,"Greys")[1:4])(50),
                       guide=guide_colourbar(position = "inside",
                                             direction = "horizontal",
                                             barheight = 1,
                                             barwidth  = 10,order = 2)) +
  geom_hline(yintercept = c(1.2,2.2,2.4,3.4),linewidth=0.4,color="black") +
  geom_textpath(aes(label = metabolite_name,y =3.6),size=1.5,parse = F,
                angle=90,
                vjust=0.5,hjust=0) +
  coord_radial(inner.radius = 0.5,clip="off")  +
  theme_void() +
  theme(plot.margin = margin(0,0,0,0,unit="cm"),
        legend.title = element_markdown(margin = margin(b=0)),
        legend.title.position = "top",
        legend.key.width = unit(0.5,"cm"),
        legend.key.spacing.y = unit(-0.1,"cm"),
        legend.position.inside = c(0.52,0.5))

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

购买介绍

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

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

在线目录大纲

淘宝店铺

2025年更新案例图展示

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