欢迎关注R语言数据分析指南
❝本节来通过 nature genetics上的一篇新论文来介绍一张综合图的绘制,论文未提供图表数据,小编根据图形来自行构建数据进行绘图,结果与原文有所不同,个人观点仅供参考。有需要学习R语言绘图的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。
论文信息
Single-cell eQTL analysis identifies genetic variation underlying metabolic dysfunction-associated steatohepatitis
Hong, 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年案例图展示


































