欢迎关注R语言数据分析指南
❝本节来通过NC上的一篇新论文来介绍一类热图的绘制,论文提供了原始数据,小编根据对图形的理解来进行数据格式转换及绘图,结果与原文有所不同,个人观点仅供参考。有需要学习R语言绘图的朋友可关注文末介绍购买小编的R绘图文档。购买前请咨询,零基础不要买。
论文信息
Mast cells boost anti-tumor potency of MAIT cells via inflammasome-dependent secretion of IL-18
Fan, F., Wang, J., Liu, K. et al. Mast cells boost anti-tumor potency of MAIT cells via inflammasome-dependent secretion of IL-18. Nat Commun 16, 6074 (2025). https://doi.org/10.1038/s41467-025-61324-w
论文图
该图图系统展示了9种肥大细胞亚群在免疫相关功能中的差异性特征。图中显示,不同MC亚群在细胞因子和趋化因子表达上存在明显分化,例如 IL-18⁺MCs 显著表达 IL18,而 CCL5⁺MCs 强烈表达 CCL4/CCL5。通路层面,多个亚群在 mast cell activation、FcεRI 和 TLR 通路上展现出不同的活性谱系,提示这些亚群在炎症反应与免疫调控中可能扮演独特角色。
仿图
图形解读
本图虽结构简单,但其绘制方式突破了常规。传统方法通常将左侧的气泡图与右侧的热图拆分绘制,再后期拼图整合;而本案例中,我们通过添加多个图层的方式将二者整合于同一画布,利用 facet_wrap() 函数实现分面,同时结合 force_panelsizes() 精细控制左右面板宽度。此外,使用facetted_pos_scales()对 X 轴文本角度进行定制化调整,以优化不同面板的信息呈现。该图虽简单,但其代码结构在应对复杂多图层、多分组的可视化任务中具有很强的通用性与扩展性,值得深入掌握与借鉴。
论文数据
代码展示
# 读取数据:包含气泡图部分信息
df <- read_tsv("data1.tsv")
# 读取数据2:热图部分,长格式转换并添加分组标签
df2 <- read_tsv("data2.tsv") %>%
pivot_longer(-Cluster) %>% # 将除了Cluster列以外的列转换为长格式
mutate(group = "Pathway") # 添加group列作为分面依据
# 设置X轴标签角度和样式(用于右侧热图的标签)
axis <- guide_axis(theme = theme(
axis.text = element_text(colour = "black",
angle = 50, hjust = 1, vjust = 0))) # 设置X轴文本角度与位置
ggplot() +
geom_point(data = df,aes(Gene, Subcluster, size = Proportion,
fill = Expression),
pch = 21,color = "black", # 边框颜色
stroke = 0.7) + # 边框粗细
# 设置气泡图颜色渐变填充
scale_fill_gradientn(
colours = colorRampPalette(brewer.pal(9, "Blues")[3:8])(100)) +
# 引入新的fill比例尺,以便下方热图不受上一个fill影响
new_scale_fill() +
# 添加右侧热图图层
geom_tile(data = df2,color = "white"linewidth = 0.5,
aes(name, Cluster, fill = value),
inherit.aes = FALSE) +
# 使用group列进行分面(左为气泡图,右为热图)
facet_wrap(. ~ group, scale = "free_x") + # 不同面板可有独立x轴
# 强制设置每个面板的宽度
force_panelsizes(cols = c(11, 10, 8),respect = FALSE) +
# 针对Pathway分面单独设置x轴标签的旋转效果
facetted_pos_scales(x = list(
group %in% c("Pathway") ~ scale_x_discrete(
guide = axis))) +
# 设置热图的颜色填充(第二个fill)
scale_fill_gradientn(
colours = colorRampPalette(brewer.pal(9, "Blues")[3:8])(100)) +
# 设置y轴不留边距
scale_y_discrete(expand = expansion(mult = c(0, 0))) +
# 设置x轴轻微留白,避免标签贴边
scale_x_discrete(expand = expansion(mult = c(0.05, 0.06))) +
labs(x = NULL, y = NULL) +
theme(
panel.background = element_blank(), # 去除面板背景
panel.spacing.x = unit(0, "cm"), # 面板间横向间距为0
panel.grid.major = element_line(color = "grey60"), # 添加主网格线
axis.ticks = element_blank(),
strip.background = element_blank(),
strip.text = element_text(
color = "black", face = "bold", size = 12),
axis.text = element_text(color = "black"),
legend.background = element_blank(),
legend.box = "horizontal", # 图例排列方式为横向
legend.direction = "horizontal", # 图例方向
legend.position = c(0.3, -0.3), # 图例位置调整
legend.title = element_text(vjust = 0.8),
legend.text.position = "bottom", # 图例文字位置
legend.text = element_text(
margin = margin(0.2, 0, 0, 0, unit = "cm"))
关注下方公众号下回更新不迷路
购买介绍
❝本节介绍到此结束,有需要学习R数据可视化的朋友欢迎到淘宝店铺:R语言数据分析指南,购买小编的R语言可视化文档,2025年购买将获取2025年更新的绘图内容,同时将赠送2024年的绘图文档内容。
更新的绘图内容包含数据+代码+注释文档+文档清单,小编只分享案例文档,不额外回答问题,无答疑服务,更新截止2025年12月31日结束,后续不在进行任何更新,零基础基础一般不推荐买。
案例特点
❝所选案例图绝大部份属于个性化分析图表,数据案例多来自已经发表的高分论文,并会汇总整理分享一些论文中公开的分析代码。
2025年起提供更加专业的html文档,更加的直观易学。文档累计上千人次购买拥有良好的社群交流体验,R代码结构清晰易懂.


目录大纲展示
淘宝店铺
2025年更新案例图展示
)

