dplyr + ggplot2:绘图不通过管道工作

时间:2015-08-14 12:03:54

标签: r ggplot2 dplyr

我想绘制我的数据帧的子集。我正在使用dplyr和ggplot2。我的代码仅适用于版本1,而不适用于通过管道版本2。有什么不同?

版本1(绘图工作正常):

data <- dataset %>% filter(type=="type1")
ggplot(data, aes(x=year, y=variable)) + geom_line()

带管道的第2版(绘图不起作用):

data %>% filter(type=="type1") %>% ggplot(data, aes(x=year, y=variable)) + geom_line()

错误:

Error in ggplot.data.frame(., data, aes(x = year,  : 
Mapping should be created with aes or aes_string

感谢您的帮助!

3 个答案:

答案 0 :(得分:18)

版本2的解决方案:一个点。而不是数据:

data %>% filter(type=="type1") %>% ggplot(., aes(x=year, y=variable)) + geom_line()

答案 1 :(得分:6)

我通常会这样做,这也不需要.

library(dplyr)
library(ggplot2)

mtcars %>% 
  filter(cyl == 4) %>%
  ggplot +
  aes(
    x = disp,
    y = mpg
  ) + 
  geom_point()

答案 2 :(得分:-1)

在使用管道输入时如果重新输入数据名称,就像我在下面用粗体显示的那样,函数会混淆参数序列。

data %>% filter(type=="type1") %>% ggplot(***data***, aes(x=year, y=variable)) + geom_line()

希望它适合你。