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

R语言中如何在2×2布局的子图内部嵌套创建子图

完全可以实现该嵌套子图效果

你现在基于par(mfrow = c(2,2))搭2行2列绘图矩阵的逻辑完全不用推翻重写,只需要配合base R原生的布局参数,就能在第4个绘图方格内部叠加嵌套子图,和你参考的排版效果完全一致。

实现核心逻辑

  • 按原有流程正常绘制前3个图,先在第4格位置画好主面板图
  • 借助par()的fig参数自定义嵌套小图的位置范围,搭配new = TRUE参数,在不清除原有画布内容的前提下,在指定区域叠加尺寸更小的子图即可

关键注意点:fig参数用的是整个画布的归一化全局坐标(范围为x轴01、y轴01),2x2布局下第4格(第二行第二列)的全局坐标边界是x: 0.5~1、y: 0~0.5,只要嵌套子图的坐标范围落在这个区间内,就不会溢出到其他三个图的区域。

可直接运行的示例代码

# 初始化画布与基础2x2布局
par(mfrow = c(2, 2))

# 按原有逻辑绘制前3张图
plot(rnorm(50), main = "第一行第一列图")
plot(rnorm(50), main = "第一行第二列图")
plot(rnorm(50), main = "第二行第一列图")

# 绘制第4格的主图
plot(rnorm(50), main = "第二行第二列主图")

# 配置嵌套子图的摆放位置:在第4格的右上角放置小图
par(
  fig = c(0.72, 0.97, 0.28, 0.48), # 全局坐标范围,完全落在第4格内部
  new = TRUE # 保留原有画布,叠加新图而非覆盖
)
# 绘制嵌套小图,可按需调整边框、坐标轴、标题匹配目标效果
plot(rnorm(20), axes = FALSE, main = "嵌套子图")
box()

实用调整技巧

  • 可以根据想要的子图尺寸、摆放位置,反复调整fig参数的四个边界值,灵活把小图放在第4格的左上、居中、右下任意位置
  • 如果不想手动计算全局坐标,在激活第4格绘图区域时,可通过par("usr")读取当前父图的坐标范围,再按比例换算出嵌套子图对应的全局位置,调整效率更高
  • 如果你用ggplot2生态绘图,也可以借助patchwork这类拼图包,直接把嵌套组合图作为单个元素拼入整体2x2布局的对应位置,实现同等效果,不需要手动计算坐标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 06:45:08