R语言ggplot按周几分组绘制完单量均值图结果异常如何修正?
问题产生原因
- 分组逻辑错误:需求要求按「周几+小时」分组计算均值,但原代码按
day(日期号)和hour分组,计算的是同一个自然日同一小时的完单量均值,和需求完全不匹配。 - 聚合函数使用错误:原代码用
mutate()计算均值,会为原数据集每一行都生成对应分组的均值结果,绘制柱状图时同一分组的重复值会被叠加求和,导致最终展示的数值远大于原始字段的最大值。 - 额外小问题:原代码y轴标签写的是
Available drivers,和实际展示的完单量指标不匹配。
修正后代码
library(dplyr) library(ggplot2) library(ggthemes) # 对应theme_fivethirtyeight()依赖 df_Hourly_DriverActivity %>% # 切换为需求要求的分组维度:周几+小时 group_by(weekdays, hour) %>% # 用summarise聚合,每组仅返回一行均值结果,加na.rm=TRUE避免空值干扰计算 summarise(avg_hour_rides = mean(Finished_rides, na.rm = TRUE), .groups = "drop") %>% ggplot(aes(x = hour, y = avg_hour_rides)) + geom_bar(stat = "identity") + labs(x = "小时", y = "平均完单量", title = "图x. 各时段完单量均值(按周几分面)") + theme_fivethirtyeight() + theme( plot.title = element_text(color = "gray15", size = 14, face = "bold", hjust = 0.5), axis.title.x = element_text(colour = "gray15"), axis.title.y = element_text(colour = "gray15"), axis.title = element_text() ) + facet_wrap(vars(weekdays))
内容的提问来源于stack exchange,提问作者Vahram
相关产品推荐
相关产品推荐

