ggplot2:使用%+%绘制新数据

时间:2012-03-09 23:30:11

标签: r ggplot2

当我尝试使用%+%运算符重新使用新数据重建现有绘图时,我遇到了麻烦。我的代码如下所示:

df <- data.frame(ending=now()+hours(0:5), actual=runif(6), pred=runif(6))
p <- ggplot(df, aes(x=ending)) +
  geom_line(aes(y=actual, color='Actual')) +
  geom_line(aes(y=pred, color='Predicted')) +
  ylab('Faults') +
  scale_color_manual('Values', c("Predicted"="red", "Actual"="black"))
p

工作正常。但是当我尝试替换新的df时,我遇到了错误:

p1 %+% df
Error in bl1$get_call : $ operator is invalid for atomic vectors

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

当然,在我发布后,我立即找到了答案 - 这不是ggplot2的{​​{1}}运营商。另一个命名空间碰%+%包还提供mboost运算符。

我通过%+%解决了这个问题。我也可以通过做像

这样的事来解决它
detach(package:mboost)

避免命名空间冲突的解决方案是最好的,但我不知道该怎么做。

答案 1 :(得分:1)

您可以将中缀运算符重新分配给中缀运算符,但我认为您无需特别努力就可以将它们重新转换为常规函数。试试这个:

 `%new+%` <- ggplot2::`%+%`

....并将其用作p %+% df,而不是%+%(a,b)