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

使用par(mfrow=c(1,2))无法并排显示两张图,仅输出最后一张图

问题解决方法

你的问题出在同时混用了两种绘图布局方式:par(mfrow)和print()的position参数,而且调用plot(effect(...))时已经自动绘制了图形,后续的print()操作又覆盖了之前的输出。

方案一:仅使用print()的布局参数

修改代码,在调用plot()时加上plot=FALSE,让它只返回图形对象而不直接绘制,再通过print()的position和more参数控制布局:

# 先关闭par(mfrow)的设置,避免冲突
par(mfrow=c(1,1))

# 生成图形对象但不绘制
a <- plot(effect(fit.no_interaction, term="WEEK", confidence.level = 0.95, residuals=T),
     colors="blue", band.colors="red", band.transparency=0.3, rug=F, cex=5,
     residuals.color=adjustcolor("cornflowerblue", alpha.f=0.2),
     residuals.pch=16, smooth.residuals=F,
     plot=FALSE) # 关键:不直接绘图

b <- plot(effect(fit.interaction, term="YEAR", confidence.level = 0.95, residuals=T),
     colors="blue", band.colors="red", band.transparency=0.3, rug=F, cex=5,
     residuals.color=adjustcolor("cornflowerblue", alpha.f=0.2),
     residuals.pch=16, smooth.residuals=F,
     plot=FALSE)

# 按位置打印,more=TRUE表示后面还有图要画
print(a, position = c(0, 0, 0.5, 1), more = TRUE)
print(b, position = c(0.5, 0, 1, 1))

方案二:仅使用par(mfrow)布局

直接利用par(mfrow)的子图布局,不需要赋值和print(),因为effect的绘图函数会自动适配当前布局:

par(mfrow=c(1,2)) # 设置1行2列的子图

# 直接绘制第一张图
plot(effect(fit.no_interaction, term="WEEK", confidence.level = 0.95, residuals=T),
     colors="blue", band.colors="red", band.transparency=0.3, rug=F, cex=5,
     residuals.color=adjustcolor("cornflowerblue", alpha.f=0.2),
     residuals.pch=16, smooth.residuals=F)

# 直接绘制第二张图,会自动填充到第二个子图位置
plot(effect(fit.interaction, term="YEAR", confidence.level = 0.95, residuals=T),
     colors="blue", band.colors="red", band.transparency=0.3, rug=F, cex=5,
     residuals.color=adjustcolor("cornflowerblue", alpha.f=0.2),
     residuals.pch=16, smooth.residuals=F)

# 可选:恢复默认布局
par(mfrow=c(1,1))

两种方案选其一即可,推荐方案二,更简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:31:23