суббота, 25 февраля 2017 г.

Пакет grid - размещение нескольких графиков на одной странице в R

Пакет grid содержит низкоуровневые функции для создания графических объектов (grobs) и позиционирования их на странице в заданных ракурсах. Пакет gtable предоставляет высокоуровневую схему разметки, более подходящую для пользователей. Пакет gridExtra с помощью пары функций arrangeGrob/grid.arrange() предоставляет возможности для размещения нескольких графических объектов на странице.

Базовая функциональность

В этом примере мы смешиваем несколько графических объектов и диаграмм.

> library(gridExtra)
> library(grid)
> library(ggplot2)
> library(lattice)
> p <- qplot="" span="">
> p2 <- span="" xyplot="">
> r <- gp="gpar(fill=" grey90="" rectgrob="" span="">
> t <- span="" text="" textgrob="">
> grid.arrange(t, p, p2, r, ncol=2)


Rplot01.png

Заголовок и подписи

> gs <- function="" ii="" lapply="" span="">
 grobTree(rectGrob(gp=gpar(fill=ii, alpha=0.5)), textGrob(ii)))
> grid.arrange(grobs=gs, ncol=4,
            top="top label", bottom="bottom\nlabel",
            left="left label", right="right label")
> grid.rect(gp=gpar(fill=NA))

Rplot02.png

Сложные разметки

Мы можем задать разметку в виде матрицы.

> lay <- c="" rbind="" span="">
> grid.arrange(grobs = gs, layout_matrix = lay)

Rplot03.png

Все ячейки по умолчанию имеют одинаковый размер, но пользователи могут произвольно менять их размер.

> grid.arrange(grobs=gs[1:3], ncol=2, widths = 1:2, heights=unit(c(1,10), c("in", "mm")))

Rplot04.png

Вложенные разметки с arrangeGrob

Функция grid.arrange() размещает графические объекты на странице. Для более сложных разметок мы можем хранить gtable и комбинировать ее с другими объектами, то есть формировать вложенные разметки. Для этого используется arrangeGrob().

> g1 <- arrangegrob="" grobs="gs," layout_matrix="t(lay))</span">
> g2 <- arrangegrob="" grobs="gs," layout_matrix="lay)</span">
> grid.arrange(g1, g2, ncol=2)

Rplot05.png

Многостраничный вывод

Кроме всего прочего, мы мы можем размещать графические объекты на нескольких страницах; функция marrangeGrob() предоставляет удобный интерфейс для этого, а также она совместима с ggsave().

> set.seed(123)
> pl <- .x="" function="" lapply="" main="paste(" plot="" qplot="" rnorm="" span="" x="">
> ml <- marrangegrob="" ncol="2)</span" nrow="2," pl="">
## неинтерактивный режим, вывод в многостраничный pdf
## ggsave("multipage.pdf", ml)
## интерактивный режим; вызываем `dev.new` несколько раз
> ml

Снимок экрана от 2017-02-25 16-49-14.png
Снимок экрана от 2017-02-25 16-49-40.png
Снимок экрана от 2017-02-25 16-49-55.png

Перевод. Оригинал здесь.

Комментариев нет:

Отправить комментарий