如何获取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
相关产品推荐
相关产品推荐

