Добавьте дополнительный интервал между подмножеством графиков
Я пытаюсь вывести 6 фигур в одно изображение в макете 3x2. Я хотел бы разместить дополнительное пространство между верхним и нижним двумя строками. Возможно ли использование R? Я просмотрел документацию по параметру par и plot и не могу найти подходящий вариант.
Вот пример кода:
a = rnorm(100,100,10)
b = rnorm(100,100,10)
par(mfrow=c(3,2), oma=c(1,1,1,1), mar=c(2,2,2,2))
hist(a)
hist(b)
plot(a,b)
plot(a,b)
plot(a,b)
plot(a,b)
Вот что выдает этот код:
![alt text]()
Вот то, что я хотел бы его выводить (я изменил это изображение во внешнем редакторе). Обратите внимание на дополнительное пространство между верхней строкой и нижними строками.
![alt text]()
Ответы
Ответ 1
Функция layout()
- ваш друг. Вы можете, например, определить матрицу сюжетов
1 2
3 4
5 6
7 8
а затем введите пустые участки для третьего и четвертого. Или просто придерживайтесь шести и звоните par
, чтобы добавить дополнительный интервал внизу.
Ответ 2
Я могу представить три способа:
1) Используйте графический параметр mar
для установки поля графика
Вы можете получить текущие поля с помощью
currmar <- par()$mar
Вы можете установить новые поля с помощью
par("mar"=c(5, 4, 4, 2))
для чисел, являющихся нижним, левым, верхним и правым полями (см. ?par
)
Вы можете сделать несколько вызовов par
для каждого графика, поэтому вы можете изменить нижнее поле только для верхних графиков.
2) Используйте макет для создания неравномерной сетки (см. ?layout
для примеров)
3) Сохраните график в .svg или .pdf, а затем используйте Inkscape (или любое другое программное обеспечение, которое вам нравится) для перемещения графиков.
Ответ 3
Думаю, что с mar
я бы это сделал. Однако, как вам кажется, вы хотите, чтобы все сюжеты были одинаковыми. Таким образом, вам нужно иметь ту же сумму, что и марк на каждом сюжете сверху и снизу.
В вашем случае можно использовать следующие номера:
1. строка: par(mar=c(7,4,4,2))
2. строка: par(mar=c(5,4,6,2))
3. строка: par(mar=c(7,4,4,2))
Таким образом, все участки занимают одну и ту же высоту. Модифицируйте первое и третье число таким образом, чтобы они были одинаковыми для каждого сюжета, чтобы выполнить это.
Однако, предостережение: в нижней строке есть несколько лишних пробелов.