大数跨境
0
0

跟着NC学绘图:左气泡右热图-可随心而动

跟着NC学绘图:左气泡右热图-可随心而动 R语言数据分析指南
2025-07-04
0

欢迎关注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(11108),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(00))) +
# 设置x轴轻微留白,避免标签贴边
  scale_x_discrete(expand = expansion(mult = c(0.050.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.2000, unit = "cm"))

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

购买介绍

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

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

案例特点

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

目录大纲展示

淘宝店铺

2025年更新案例图展示

)


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