You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并pheatmap热图与GOplot条形图?ggarrange合并失败求助

解决pheatmap热图与GOplot条形图合并时热图空白的问题

问题原因

pheatmap生成的热图属于grid包的grob图形对象,而非标准ggplot对象,而ggarrange默认仅支持渲染ggplot类对象,直接传入会导致热图区域无法正常显示。

解决方法

方法1:将pheatmap转换为ggplot兼容对象

使用ggplotify包将pheatmap的grob对象转换为ggplot类,再用ggarrange合并:

library(pheatmap)
library(GOplot)
library(ggpubr)
library(ggplotify)

# 生成热图并转换格式
heatmap_a <- pheatmap(your_data_matrix)
heatmap_a_ggplot <- as.ggplot(heatmap_a$gtable)

# 生成GO富集条形图
go_bar_b <- GOBar(your_go_enrichment_data)

# 合并图形
ggarrange(heatmap_a_ggplot, go_bar_b, ncol = 2, nrow = 1)

方法2:直接使用gridExtra合并grob对象

将GOplot的ggplot条形图转为grob后,用grid.arrange直接合并两个grob:

library(gridExtra)
library(ggplot2)

# 把GO条形图转为grob格式
go_bar_b_grob <- ggplotGrob(go_bar_b)

# 合并热图grob和条形图grob
grid.arrange(heatmap_a$gtable, go_bar_b_grob, ncol = 2)

方法3:使用patchwork包拼接(推荐)

patchwork支持直接兼容ggplot和grid对象,语法更简洁:

library(patchwork)

# 直接拼接两个图形
heatmap_a_ggplot + go_bar_b + plot_layout(ncol = 2)

内容的提问来源于stack exchange,提问作者user2110417

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:05:28