r - 使用 ggplot_build 改变 ggplot2 图并在 plot_grid 中使用它

标签 r ggplot2 cowplot

我想使用 ggplot_buildggplot_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 包绘制。

要绘制您的q1q2,请使用:

library(grid)
grid.newpage()
grid.draw(q1)

关于r - 使用 ggplot_build 改变 ggplot2 图并在 plot_grid 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815172/

相关文章:

R ggplot : Two histograms (based on two different column) in one graph

r - 在 R 中使用 cowplot 对齐 image() 图

r - paste0-在 plyr :rename (now with update) 中构建一个参数

r - 仅合并 r 中两列的值

r - 如何在两列中融合带有测量变量和相关标准偏差的数据框

r - 如何在中断分段时间序列回归中向 ggplot 添加线性段

r - ggplot2:geom_text()与facet_grid()?

从函数返回图形而不绘制它

r - 使用 cowplot 和 ggplot2 在某些行周围绘制边框

javascript - 指定图中某些节点的位置