gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:01:48 25 4
gpt4 key购买 nike

我想使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com