group-telegram.com/R4marketing/994
Create:
Last Update:
Last Update:
Как расположить несколько ggplot2 графиков на одном изображении
Для расположения сразу нескольких графиков на одном изображении удобно использовать пакет patchwork
. patchwork
по сути решает туже проблему, что и gridExtra::grid.arrange()
и cowplot::plot_grid()
, но имеет более простой синтаксис.
Рассмотрим несколько примеров:
Пример более сложного макета, в котором 3 графика будут располагаться в верхней части изображения, и один в нижней.
library(ggplot2)
library(patchwork)
# создаём 2 графика
p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))
# располагаем их на одном изображении
p1 + p2
Так же управлять макетом изображения вам позволяет функция
p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) + geom_bar(aes(carb))
(p1 | p2 | p3) /
p4
plot_layout()
:Аргументы функции
p1 + p2 + p3 + p4 +
plot_layout(ncol = 3)
plot_layout()
:●
ncol
, nrow
- Размеры создаваемой сетки, если оба равны NULL
, для установки размеров будет использоваться та же логика, что и при использовании facet_wrap()
.● byrow - Аналогично
byrow
в matrix()
. При значении FALSE
, графики будут заполнены по столбцам.● widths, heights - Относительная ширина и высота каждого столбца и строки в сетке. Будет повторяться, чтобы соответствовать размерам сетки.
● guides - Позволяет расположение общей легенды объединяемых графиов, принимает одно из следующих значений: 'collect', 'keep', 'auto'
● tag_level - Автопометка графиков, принимает одно из следующих значений: 'keep', 'new'
● design - Спецификация расположения областей графиков на макете.
Пример работы с аргументом
design
p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))
p3 <- ggplot(mtcars) + geom_bar(aes(gear)) + facet_wrap(~cyl)
p4 <- ggplot(mtcars) + geom_bar(aes(carb))
p5 <- ggplot(mtcars) + geom_violin(aes(cyl, mpg, group = cyl))
# пример 1
design <- c(
area(1, 1, 2),
area(1, 2, 1, 3),
area(2, 3, 3),
area(3, 1, 3, 2),
area(2, 2)
)
p1 + p2 + p3 + p4 + p5 + plot_layout(design = design)
# пример 2
design <- "
122
153
443
"
p1 + p2 + p3 + p4 + p5 + plot_layout(design = design)
Результат работы этого примера вы видите на изображении к посту.
Ссылки:
- сайт пакета patchwork
#заметки_по_R
BY R4marketing | канал Алексея Селезнёва | Язык R
Share with your friend now:
group-telegram.com/R4marketing/994