大数跨境
0
0

跟着NG学绘图-饼图+图标+热图的多元拼图范式

跟着NG学绘图-饼图+图标+热图的多元拼图范式 R语言数据分析指南
2025-06-28
0

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

本节来通过 nature genetics上的一篇新论文来介绍一张综合图的绘制,论文未提供图表数据,小编根据图形来自行构建数据进行绘图,结果与原文有所不同,个人观点仅供参考。有需要学习R语言绘图的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。

论文信息

Single-cell eQTL analysis identifies genetic variation underlying metabolic dysfunction-associated steatohepatitisHong, S.E., Mun, S.J., Lee, Y.J. et al. Single-cell eQTL analysis identifies genetic variation underlying metabolic dysfunction-associated steatohepatitis. Nat Genet (2025). https://doi.org/10.1038/s41588-025-02237-8

原图

仿图

图形解读

该图展示了在非酒精性脂肪性肝炎(MASH)中细胞间通信网络的关键变化。左侧图标和饼图显示,IGF 通路在 MASH 中显著下调(以绿色为主),而 NOTCH 和 CD6 通路在 MASH 中明显上调(以红色为主)。右侧热图进一步揭示了各通路在不同细胞类型中的功能角色,IGF 通路主要活跃于健康组的肝细胞和胆管细胞,NOTCH 通路在 MASH 中由内皮细胞和树突状细胞主导,CD6 通路则在多个免疫细胞中广泛激活。整体结果表明,MASH 伴随着通信通路的重编程,特别是在免疫相关信号的增强方面。

此图拆分开来看主要是左侧图标的导入,中部饼图,右侧三组热图的组合,整体内容较为明了。先单独绘图后拼图整合,需要注意拼图时的一些细节问题。难度适中适合进阶学习

代码展示

library(tidyverse)
library(patchwork)
library(ggimage)
library(grid)
library(cowplot)

heatmap <- read_tsv("heatmap.tsv")
# 热图颜色
my_colors <- c("#ffffcc""#fd8d3c""#800026")

# 定义绘图函数:参数 show_x 控制是否显示 x 轴文本
plot_pathway <- function(pw, show_x = TRUE) {
  g <- heatmap %>%
    filter(Pathway == pw) %>%
    ggplot(aes(x = Cell_Type, y = Role)) +
    geom_tile(aes(fill = Score), color = "black", linewidth = 0.2) +
    scale_fill_gradientn(colors = my_colors, limits = c(0,1), name = "Score") +
    scale_x_discrete(expand = c(0,0)) +
    scale_y_discrete(expand = c(0,0)) +
    labs(x = NULL, y = NULL) +
    theme_test(base_size = 12) +
    theme(
      axis.text.x = if (show_x) element_text(angle = 45, hjust = 1,
                                             vjust = 1,color = "black"else element_blank(),
      axis.text.y = element_text(color = "black"),
      axis.ticks = element_blank(),
      legend.position = "right"
    )
return(g)
}

# 分别绘制三图,仅最后一个显示 x 轴文字
p1 <- plot_pathway("IGF", show_x = FALSE)
p2 <- plot_pathway("NOTCH", show_x = FALSE)
p3 <- plot_pathway("CD6", show_x = TRUE)
# 饼图比例数据(已知)
pie_data <- tribble(
  ~Pathway, ~MASH, ~Control_MASL,
"IGF",     0.2,      0.8,
"NOTCH",   1.0,      0.0,
"CD6",     0.8,      0.2)
# 配色方案
pie_colors <- c("Control+MASL" = "darkgreen""MASH" = "firebrick")

# 饼图生成函数
plot_pie <- function(pathway) {
  vals <- pie_data %>% filter(Pathway == pathway)
  df <- tibble(
    group = c("Control+MASL""MASH"),
    value = c(vals$Control_MASL, vals$MASH)
  )
  ggplot(df, aes(x = "", y = value, fill = group)) +
    geom_col(width = 1) +
    coord_polar("y") +
    scale_fill_manual(values = pie_colors) +
    theme_void() +
    theme(legend.position = "none")
}

# 生成三张饼图
pies <- list("IGF""NOTCH""CD6") %>% map(plot_pie)

# 构建图标数据框
icon_data <- tribble(
  ~Pathway, ~Image,                      ~y,
"IGF",    "IGF.png",        3.6,
"NOTCH",  "NOTCH.png",      2.1,
"CD6",    "CD6.png",        0.6)

p4 <- ggplot(icon_data, aes(x = 0.2, y = y)) +
  geom_image(aes(image = Image), size = 0.25, by = "height") +
  ylim(0,4) +
  theme_void()+
  theme(plot.margin = margin(2,0.5,0,0.5,unit="cm"))

p <- (pies[[1]]|p1)/(pies[[2]]|p2)/(pies[[3]]|p3)+
  plot_layout(guides = "collect") & 
  theme(legend.position = "right")

plot <- (p4|p)+  plot_layout(widths = c(1,6))

plot2 <- ggdraw(plot) +
  draw_line(x = c(0.05,0.83),  # x起止点(单位是画布比例)
    y = c(0.85,0.85),  # y起止点
    color = "black",size = 0.5,linetype=1) +
  draw_text("Pathway", x = 0.06, y = 0.9, hjust = 0, size = 12) +
  draw_text("Ratio by\nclinical status", x = 0.17, y = 0.9, hjust = 0, size = 12) +
  draw_text("Direction of signaling by cell type", x = 0.42, y = 0.9, hjust = 0, size = 12)

ggsave(plot2,file="plot.pdf",width=8.18,height=4.69,unit="in")

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

购买介绍

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

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

案例特点

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

目录大纲展示

淘宝店铺

2025年更新案例图展示

)

2024年案例图展示


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