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

如何缩减绘图输出空间?R语言分屏绘图尺寸调整问询

嘿,我之前在毕业论文排版绘图时也碰到过类似的需求,给你几个比直接调整split.screen坐标更高效、灵活的整体空间缩减方法:

方法1:用layout()替代split.screen()

layout()比split.screen()更直观,能直接通过边距参数压缩整体冗余空间,同时保持分屏布局:

# 定义1行2列的分屏布局
layout(matrix(c(1,2), nrow=1), widths=c(1,1))

# 全局调整边距:mar是子图内部边距,oma是整体外边距,数值越小空间越紧凑
par(mar=c(2.5, 2.5, 1.5, 0.5), oma=c(1,1,1,1)) 

# 绘制左图
plot(1:10, main="Screen1", xlab="", ylab="")
# 绘制右图
plot(10:1, main="Screen2", xlab="", ylab="")

通过微调mar和oma的数值,可以精准控制整体绘图的紧凑程度,比单独调整分屏坐标更高效。

方法2:用gridExtra包实现精细化控制(适配基础绘图/ggplot2)

如果你的绘图是用ggplot2,或者想更精准定义整体输出尺寸,gridExtra的grid.arrange()是绝佳选择:

library(gridExtra)
library(ggplot2)

# 示例绘图对象
p1 <- ggplot(data.frame(x=1:10, y=1:10), aes(x,y)) + 
  geom_point() + 
  theme_bw() +
  theme(plot.margin = margin(3,3,3,3, "pt")) # 压缩子图内部边距

p2 <- ggplot(data.frame(x=10:1, y=1:10), aes(x,y)) + 
  geom_point() + 
  theme_bw() +
  theme(plot.margin = margin(3,3,3,3, "pt"))

# 组合绘图并设置整体尺寸
grid.arrange(p1, p2, ncol=2,
             widths=c(3.5, 3.5), heights=3, # 整体宽高(英寸)
             padding=unit(0.1, "cm")) # 子图间距

这种方式可以直接定义整体输出的物理尺寸,配合子图边距调整,完全满足毕业论文中紧凑排版的需求。

方法3:从绘图设备根源控制尺寸

如果需要导出图片嵌入Markdown,直接在导出设备中设置整体宽高,配合布局调整,一步到位缩小整体空间:

# 导出为PNG,直接定义整体尺寸和分辨率
png("two_plots_compact.png", width=5, height=3, dpi=300)

layout(matrix(c(1,2), nrow=1))
par(mar=c(2,2,1,1)) # 极致压缩子图边距
plot(1:10, main="", xlab="", ylab="")
plot(10:1, main="", xlab="", ylab="")

dev.off()

导出的图片本身尺寸紧凑,放到Markdown里无需额外调整。

优化你原有的split.screen方案

如果一定要继续用split.screen,可以结合par(plt)先缩小整体绘图区域,再分屏:

# plt参数定义整体绘图区域占设备的比例:c(左,右,下,上)
par(plt=c(0.08, 0.92, 0.08, 0.85)) 

figs <- rbind(c(0, 0.5, 0, 1), 
              c(0.5, 1, 0, 1)) 
colnames(figs) <- c("W", "E", "S", "N")
screenIDs <- split.screen(figs)

screen(screenIDs[1])
plot(1:10)
screen(screenIDs[2])
plot(10:1)

close.screen(all=T)

这样先压缩整体画布,再分屏,比单独调整分屏的N坐标更能控制整体空间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:09:17