Telegram Group & Telegram Channel
​​Как расположить несколько ggplot2 графиков на одном изображении

Для расположения сразу нескольких графиков на одном изображении удобно использовать пакет patchwork. patchwork по сути решает туже проблему, что и gridExtra::grid.arrange() и cowplot::plot_grid(), но имеет более простой синтаксис.

Рассмотрим несколько примеров:
  
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

Пример более сложного макета, в котором 3 графика будут располагаться в верхней части изображения, и один в нижней.
 
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



group-telegram.com/R4marketing/994
Create:
Last Update:

​​Как расположить несколько ggplot2 графиков на одном изображении

Для расположения сразу нескольких графиков на одном изображении удобно использовать пакет patchwork. patchwork по сути решает туже проблему, что и gridExtra::grid.arrange() и cowplot::plot_grid(), но имеет более простой синтаксис.

Рассмотрим несколько примеров:

  
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

Пример более сложного макета, в котором 3 графика будут располагаться в верхней части изображения, и один в нижней.
 
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

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Following this, Sebi, in an order passed in January 2022, established that the administrators of a Telegram channel having a large subscriber base enticed the subscribers to act upon recommendations that were circulated by those administrators on the channel, leading to significant price and volume impact in various scrips. During the operations, Sebi officials seized various records and documents, including 34 mobile phones, six laptops, four desktops, four tablets, two hard drive disks and one pen drive from the custody of these persons. "We're seeing really dramatic moves, and it's all really tied to Ukraine right now, and in a secondary way, in terms of interest rates," Octavio Marenzi, CEO of Opimas, told Yahoo Finance Live on Thursday. "This war in Ukraine is going to give the Fed the ammunition, the cover that it needs, to not raise interest rates too quickly. And I think Jay Powell is a very tepid sort of inflation fighter and he's not going to do as much as he needs to do to get that under control. And this seems like an excuse to kick the can further down the road still and not do too much too soon." The gold standard of encryption, known as end-to-end encryption, where only the sender and person who receives the message are able to see it, is available on Telegram only when the Secret Chat function is enabled. Voice and video calls are also completely encrypted. The next bit isn’t clear, but Durov reportedly claimed that his resignation, dated March 21st, was an April Fools’ prank. TechCrunch implies that it was a matter of principle, but it’s hard to be clear on the wheres, whos and whys. Similarly, on April 17th, the Moscow Times quoted Durov as saying that he quit the company after being pressured to reveal account details about Ukrainians protesting the then-president Viktor Yanukovych.
from in


Telegram R4marketing | канал Алексея Селезнёва | Язык R
FROM American