Логическая группировка произвольного числа участков в R

Я имею n графики, которые я хочу отобразить в сетке на одном изображении в R. Использование par Я могу заранее указать количество строк и столбцов, чтобы разделить сюжет. Например, для n = 4, имеет смысл организовать 4 участка в квадратную сетку 2х2.

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

Я хотел бы, чтобы это работало для произвольного n, тем не мение. Так, например, скажем, я хочу построить 12 графиков рядом. Наиболее практично, чтобы результирующая сетка графиков была как можно более квадратной, поэтому я бы хотел сетку 3х4 par(mfrow=c(3, 4)), а не 12x1 par(mfrow=c(12, 1)), Или, если я хочу построить 11 участков, 12-ая сетка будет пустой.

Есть ли быстрый способ сделать это в R? В противном случае я полагаю, что мне нужно сделать некоторую алгебру - это проблема оптимизации, минимизирующая периметр сетки при фиксированной площади n,

2 ответа

Решение

grDevices::n2mfrow() могу сделать это для вас

За nplots графики, как насчет:

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

Другие вопросы по тегам