通过将ggplot()对象分配给变量,可以轻松地重用该对象,并在几何图层上创建具有变体的多个版本的绘图,而无需为每个绘图分配冗余代码.但是,我想知道是否有一种方法可以在交换全局美学映射时重用geom层.
一个用例就是我想要制作几个具有相同几何表示的图,但是想要换出映射到其中一个维的变量.另一个用例是我想制作两个图,其中数据来自两个不同的数据帧.
解决这个问题的直观方法是:1)将geom图层组合保存到变量而不指定ggplot()对象,或2)通过添加另一个对象来覆盖变量中现有ggplot()对象的数据和美观ggplot()对象.执行这些操作中的任何一个都会导致错误(对于二进制运算符的1-"非数字参数,对于2 - "不知道如何将o添加到绘图中").
例如,假设在下面的图中我想重新使用gg变量,但是将x变量重新映射到dataframe中的其他内容:
  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行,这就是为什么这开始是代码维护烦恼.
Bri*_*ggs 20
与美学相关的交换变量和与绘图相关的数据都很简单.使用gg你在问题中定义,单独使用aes来改变美学:
gg + aes(x=table, y=depth)
要更改用于绘图的数据,请使用%+%运算符.
dsamp2 <- head(diamonds, 100)
gg %+% dsamp2