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

能否在单张图中绘制多个EnhancedVolcano图?par(mfrow)无效求助

问题原因

EnhancedVolcano是基于ggplot2开发的可视化工具,返回的是ggplot对象。而par(mfrow)是base R绘图系统的布局控制命令,仅对base R原生绘图函数(如plot())有效,无法控制ggplot对象的排列,因此最后绘制的图会覆盖前面的,导致只显示最后一张。

解决方法

可以通过ggplot生态的布局工具来实现多图拼接,以下是两种常用方案:

方案1:使用patchwork包(推荐,语法简洁)

先安装依赖包(若未安装):

install.packages("patchwork")

修改后的代码示例:

library(EnhancedVolcano)
library(patchwork)

# 分别生成两个火山图对象
p1 <- EnhancedVolcano(res,
        lab = rownames(res),
        x = 'log2FoldChange',
        y = 'pvalue')

p2 <- EnhancedVolcano(res,
        lab = rownames(res),
        x = 'log2FoldChange',
        y = 'padj')

# 保存横向排列的组合图
png("volcano.png", width=480*2)
p1 + p2  # 用`p1 / p2`可实现纵向排列
dev.off()

方案2:使用gridExtra包

先安装依赖包(若未安装):

install.packages("gridExtra")

修改后的代码示例:

library(EnhancedVolcano)
library(gridExtra)

# 分别生成两个火山图对象
p1 <- EnhancedVolcano(res,
        lab = rownames(res),
        x = 'log2FoldChange',
        y = 'pvalue')

p2 <- EnhancedVolcano(res,
        lab = rownames(res),
        x = 'log2FoldChange',
        y = 'padj')

# 保存横向排列的组合图
png("volcano.png", width=480*2)
grid.arrange(p1, p2, ncol=2)  # ncol=2设置为2列,nrow=2可设置为2行
dev.off()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:40:05