我想使用 ggplot_build
和 ggplot_gtable
函数更改 R 中的 ggplot2
绘图,然后在 plot_grid< 中使用它
.
制作情节的示例代码:
library(ggplot2)
library(cowplot)
p1 <- ggplot(iris) +
aes(x = Sepal.Length, y = Sepal.Width, colour = Species) +
geom_point()
p2 <- ggplot(iris) +
aes(x = Petal.Length, y = Petal.Width, colour = Species) +
geom_point()
plot_grid(p1, p2)
然后我使用 ggplot_build 和 ggplot_gtable 更改 p1:
q1 <- ggplot_build(p1)
q1$data[[1]]$colour <- "black"
q1 <- ggplot_gtable(q1)
plot(q1)
绘制了我想要的图,但我不能在 plot_grid
中使用它和 plot_grid(q1, p2)
。我该如何解决这个问题?
编辑:代码应该确实有效。完整的 R 重新启动后,一切都按预期工作。应该先尝试这个,抱歉!
最佳答案
当调用打印/绘制 ggplot2 时,后台真正发生的是:
data <- ggplot_build(x)
gtable <- ggplot_gtable(data)
其中 x
是您的 ggplot2 对象(p1
og p2
)。 (参见 ggplot2:::plot.ggplot
。)
其他例程使用 ggplotGrob(x)
,它与 ggplot_gtable(ggplot_build(x))
同义。
短篇小说:gtable
不是 ggplot2 对象。这是一个抢劫对象。并且没有为 grob 对象定义绘图或打印方法。它们必须改为使用 grid
包绘制。
要绘制您的q1
和q2
,请使用:
library(grid)
grid.newpage()
grid.draw(q1)
关于r - 使用 ggplot_build 改变 ggplot2 图并在 plot_grid 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815172/