gpt4 book ai didi

r - ggplot2 - 有没有办法在重用几何层的同时覆盖全局美学映射

转载 作者:行者123 更新时间:2023-12-03 21:36:20 26 4
gpt4 key购买 nike

通过将 ggplot() 对象分配给变量,人们可以轻松地重用该对象并制作具有几何层变化的图的多个版本,而无需每个图的冗余代码。但是,我想知道是否有办法在交换全局美学映射的同时重用几何图层。

一个用例是我想用相同的几何表示制作几个图,但想换出映射到维度之一的变量。另一个用例是我想制作两个图,其中数据来自两个不同的数据框。

解决此问题的直观方法是 1) 将 geom 图层的组合保存到变量而不分配 ggplot() 对象或 2) 通过添加另一个变量来覆盖变量中现有 ggplot() 对象的数据和美学ggplot() 对象。但是,执行这些操作中的任何一个都会导致错误(对于 1-“二元运算符的非数字参数,对于 2 -“不知道如何将 o 添加到绘图中”)。

例如,假设在下图中我想重新使用 gg 变量,但将 x 变量重新映射到数据帧中的其他内容:

  dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
gg <-
(ggplot(data = dsamp, aes(x = carat, y = price, color = clarity))
+ geom_point()
+ facet_wrap(~ cut))
print(gg)

在实践中,绘图定义的长度可能超过 3 行,这就是为什么这开始成为代码维护的烦恼。

最佳答案

交换与美学相关的变量和与绘图相关的数据都很简单。使用 gg您在问题中定义,使用 aes自己改变美学:

gg + aes(x=table, y=depth)

要更改用于绘图的数据,请使用 %+%运算符(operator)。
dsamp2 <- head(diamonds, 100)
gg %+% dsamp2

关于r - ggplot2 - 有没有办法在重用几何层的同时覆盖全局美学映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011927/

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