我想要两个独立的情节.我在一个投影仪演示的不同帧中使用它们,我将向另一个添加一行(最终,不在下面的示例中).因此,我不希望演示文稿从一张幻灯片"跳过"("跳转"?)到下一张幻灯片.我希望它看起来像是自然添加的线.我认为以下代码显示了问题.这是微妙的,但不是如何第二个图的绘图区域略大于第一个图.这是因为y轴标签.
library(ggplot2)
dfr1 <- data.frame(
time = 1:10,
value = runif(10)
)
dfr2 <- data.frame(
time = 1:10,
value = runif(10, 1000, 1001)
)
p1 <- ggplot(dfr1, aes(time, value)) + geom_line() + scale_y_continuous(breaks = NULL) + scale_x_continuous(breaks = NULL) + ylab(expression(hat(z)==hat(gamma)[1]*time+hat(gamma)[4]*time^2))
print(p1)
dev.new()
p2 <- ggplot(dfr2, aes(time, value)) + geom_line() + scale_y_continuous(breaks = NULL) + scale_x_continuous(breaks = NULL) + ylab(".")
print(p2)
Run Code Online (Sandbox Code Playgroud)
我宁愿没有一个hackish解决方案,如手动设置轴标签的大小或在x轴上添加空格(参见下面的一个参考),因为我将在几个设置中使用此技术,标签可以在任何设置更改时间(我喜欢再现性,所以想要一个灵活的解决方案).
我搜索了很多,发现了以下内容:
https://groups.google.com/forum/#!topic/ggplot2/2MNoYtX8EEY
如何在不改变绘图宽度的情况下在R中使用ggplot2添加可变大小的y轴标签?
它们对我不起作用,主要是因为我需要单独的图,因此不需要像上面的一些解决方案那样在一个组合图上对齐它们.
bap*_*ste 11
没试过,但这可能有效,
gl <- lapply(list(p1,p2), ggplotGrob)
library(grid)
widths <- do.call(unit.pmax, lapply(gl, "[[", "widths"))
heights <- do.call(unit.pmax, lapply(gl, "[[", "heights"))
lg <- lapply(gl, function(g) {g$widths <- widths; g$heights <- heights; g})
grid.newpage()
grid.draw(lg[[1]])
grid.newpage()
grid.draw(lg[[2]])
Run Code Online (Sandbox Code Playgroud)