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

如何获取R中par(mfrow=c(2,3))多图窗口各子绘图区尺寸

R获取mfrow分块后子绘图区域绝对宽高的方法

基础R的par()函数内置了对应参数,可以直接精准读取尺寸,不需要手动计算,返回值默认单位为英寸。

  • 两类常用尺寸的对应参数:
    • 读取包含轴、标题边距的单个子图总宽高:调用par("fin"),返回值为长度2的数值向量,第一个元素是宽度,第二个是高度。执行完par(mfrow=c(2,3))布局设置后,该参数会自动对应到当前激活子图的尺寸。
    • 读取去掉边距、实际用于绘制数据的核心绘图区宽高:调用par("pin"),返回值格式和par("fin")一致,会自动根据你设置的子图边距动态计算结果,不存在硬算的误差。
  • 可直接运行的验证示例:
# 示例:开启9英寸宽、6英寸高的png设备,设置2行3列布局
png("test.png", width = 9, height = 6, units = "in", res = 300)
# 设定统一的子图边距:下4、左4、上2、右1
par(mfrow = c(2,3), mar = c(4,4,2,1))

for (i in 1:6) {
  plot.new() # 激活第i个子图,无需实际绘制内容
  cat("=== 第", i, "个子图尺寸 ===\n")
  cat("含边距总尺寸(英寸):", par("fin"), "\n")
  cat("核心绘图区尺寸(英寸):", par("pin"), "\n")
  # 如需转像素单位,直接乘设备分辨率即可
  cat("核心绘图区尺寸(像素):", par("pin") * 300, "\n")
}

dev.off()

注意:不要用设备总宽高除以行列数的方式硬算子图尺寸,只要你设置了子图边距、设备预留了内外边距,硬算结果一定会有偏差,直接读取par()返回值是最准确的方案。如果你单独给某个子图调整了边距参数,par("pin")和par("fin")也会同步返回对应子图的正确尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:15:44