每个筛选的数据集使用不同颜色的散点图

时间:2019-12-13 11:18:02

标签: r ggplot2 dplyr

我正在一个项目中尝试评估公交司机的驾驶效率。我正在使用的数据如下所示:

Driver     fvec_arpox_md
1          2561
2          1245
2          2315
2          1264
3          1256
3          1235
1          2145
2          3265
5          2121
9          1256
5          1785
46         1945
2          1261
3          1245

所以我想做一个散点图,仅针对某些特定驱动程序(例如,驱动程序1和2)以及每个具有不同颜色的数据集显示fvec_aprox_md。

我刚刚开始学习R,到目前为止,我已经能够得到如下图: Scatterplot with all the data unfiltred and color gradient

我还添加了一个仅在控制台上显示过滤数据的过滤器,但它不会影响散点图。这是我使用的代码:

library(ggplot2)
library(dplyr)
filter(Ruta268, num_conductor==4327)
b<-ggplot(Ruta268, aes(y=Ruta268$fvec_aprox_md, x=seq(1,length(Ruta268$fvec_aprox_md)), group=num_conductor, color=num_conductor))
b + geom_point() +
  geom_smooth()

1 个答案:

答案 0 :(得分:0)

如果要为每个驱动程序添加颜色代码,则需要在美观colour中添加aes()参数。在ggplot2中,每当您希望函数引用数据中的某些内容时,都需要将其放入aes()中。当您只想更改整个图或每个geom层中的参数而与数据无关时,可以在aes()之后放置一个参数,例如ggplot(data, aes(x,y), colour = 'red')

这就是您的geom_smooth()也不起作用的原因。 group的论点也必须具有美学意义,geom_smooth()才能找到数据并为每个驾驶员拟合一条平滑的线。

b<-ggplot(Ruta268,
          aes(y=Ruta268$fvec_aprox_md,
              x=seq(1,length(Ruta268$fvec_aprox_md),
              color=num_conductor,
              group=num_conductor
              )
          )
b + geom_point() +
    geom_smooth()

如果您不熟悉R,我强烈推荐tidyverse开发人员编写的open book,以使您入门更轻松。

如果只希望在整个数据集中包含一些驱动程序,则应按照@s_t的建议事先过滤它们,并在ggplot()中而不是Ruta268中使用它。

filtered.df <- Ruta268 %>%
              filter(num_conductor == 4327)