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

如何使用grid.arrange美观排布多个dotplot避免绘图挤压

R语言grid.arrange排布lattice图形挤压问题解决方案
  • 问题根源:grid.arrange默认会根据传入图形数量自动适配行列,4个图形默认按2行2列排布,单独设置heights参数未生效通常是因为没有配合widths参数,且没有调整lattice图形本身的内边距冗余。
  • 方案1:同步调整布局参数+缩小图形内边距
library(lattice)
library(gridExtra)

# 调整lattice图形的内边距,减少不必要的留白占用显示空间
p1 = dotplot(mpg ~ cyl, data = mtcars,
             par.settings = list(
               layout.heights = list(top.padding = 0.5, bottom.padding = 0.5),
               layout.widths = list(left.padding = 0.5, right.padding = 0.5)
             ))

# 显式指定行列数,同时设置宽高比例
grid.arrange(p1, p1, p1, p1,
             nrow = 2, ncol = 2,
             heights = c(1, 1), # 两行高度比例为1:1,可按需放大对应行数值
             widths = c(1, 1))  # 两列宽度比例为1:1,可按需放大对应列数值
  • 方案2:调整画布导出尺寸
    如果是本地预览时出现挤压,导出图片时设置更大的画布宽高即可获得充足的单个图形显示空间:
# 导出为png格式示例,可按需调整width、height数值增大画布
png("4_dotplot.png", width = 900, height = 900, res = 120)
grid.arrange(p1, p1, p1, p1, nrow = 2, ncol = 2)
dev.off()
  • 方案3:调整排布方向提升可读性
    如果单图横向信息密度更高,可改为4行1列排布,让每个图横向占满画布:
grid.arrange(p1, p1, p1, p1,
             nrow = 4, ncol = 1,
             heights = rep(1,4))

如果单图纵向信息密度更高,可改为1行4列排布:

grid.arrange(p1, p1, p1, p1,
             nrow = 1, ncol = 4,
             widths = rep(1,4))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:27:03