R中任意数量的图的逻辑分组

Logical grouping of arbitrary number of plots in R

我有 n 个图,我想在 R 中的单个图像的网格中显示。使用 par 我可以预先指定行数和列数来划分图。例如,对于 n = 4,在 2x2 正方形网格中组织 4 个地块最有意义。

par(mfrow=c(2,2))
plot(p1)
plot(p2)
plot(p3)
plot(p4)

不过,我希望它适用于任意 n。因此,例如,假设我想并排绘制 12 个地块。最实用的是生成的图网格尽可能像正方形:所以,我想要一个 3x4 的网格 par(mfrow=c(3, 4)),而不是 12x1 par(mfrow=c(12, 1))。或者,如果我想绘制 11 个地块,将第 12 个网格留空就可以了。

在 R 中有快速的方法吗?否则我想我必须做一些代数 - 这是一个优化问题,在给定固定区域 n.

的情况下最小化网格的周长

grDevices::n2mfrow() 可以为您做到

对于nplots个地块,如何:

rows = floor(sqrt(nplots)) columns = ceiling(sqrt(nplots)) par(mfrow=c(rows,columns))