我尝试让多面图跨越多页,但是最后一页有问题。根据最终页面上子图的数量,它们的大小会发生变化,以使其与前一页的大小不同。如何使所有子图具有相同的大小?查看我的使用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页的子图大。我想要相同的大小,并在底部留一个空白区域。我还希望每页保留一组轴和标签。
这里
答案 0 :(得分:2)
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)
答案 1 :(得分:0)
此问题现已在更高的ggforce版本中解决(我对其进行了测试以在0.2.2版上工作)。问题中的代码现在可以根据需要运行。