Как сохранить размер отдельных участков в фасетном графике в R - PullRequest
0 голосов
/ 06 декабря 2018

Я стараюсь, чтобы большой фасет охватывал несколько страниц, но у меня проблемы с последней страницей.В зависимости от количества вложенных сюжетов, которые заканчиваются на последней странице, они меняются по размеру, так что они не имеют такой же размер, как предыдущие страницы.Как я могу получить все вспомогательные участки одинакового размера?Посмотрите мой пример использования ggforce, чтобы увидеть мою проблему.Ответы не должны использовать ggforce, это был просто самый простой способ показать мою проблему.

library(ggplot2)
library(ggforce)
df <- data.frame(x=rnorm(100, 1, 1), y=rnorm(100,1,1), group=rep(c(1,2), 100), 
item=rep(c(1,2,3,4,5), 40))
ggplot(df) +
    geom_point(aes(x, y)) +
    facet_grid_paginate(item~group, ncol = 2, nrow = 3, page = 1)
ggplot(df) +
    geom_point(aes(x, y)) +
    facet_grid_paginate(item~group, ncol = 2, nrow = 3, page = 2)

Этот код сгенерирует две страницы ниже.Обратите внимание, что вложенные участки на странице 2 больше, чем на странице 1. Я хотел бы иметь тот же размер и пустую область внизу.Я также хотел бы сохранить один набор осей и меток на страницу.

The first page The second page

Здесь

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Эта проблема была решена в более поздней версии ggforce (я тестировал ее на работу с версией 0.2.2).Код в вопросе теперь будет работать как хотел.

0 голосов
/ 07 декабря 2018

egg::set_panel_size() может использоваться для установки фиксированного значения размера панели, например

library(ggplot2)
library(egg)
library(gridExtra)
df <- data.frame(x=rnorm(100, 1, 1), y=rnorm(100,1,1), group=rep(c(1,2), 100), 
                 item=rep(c(1,2,3,4,5), 40))

sd <- split(df, cut(df$item, 2))

p <- ggplot(df) +  geom_point(aes(x, y)) + facet_grid(item~group) + theme_grey()
pl <- lapply(sd, "%+%", e1 = p)
pl <- lapply(pl, egg::set_panel_size, width=unit(2,"in"), height = unit(1.5,"in"))

marrangeGrob(pl, nrow=1,ncol=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...