R语言ggplot绘制客户评分散点图及平均值折线的实现问题
解决方法:添加客户评分平均值折线到散点图
你之前尝试的geom_hline是绘制全局水平平均线,无法展示每月评分的变化趋势;stat_summary需要正确配置参数才能生成按月份的平均值折线。下面提供两种可行方案:
方案一:直接用stat_summary生成折线
利用stat_summary实时计算每月评分均值,通过指定geom="line"绘制折线,同时需要设置group=1(因为x轴是因子类型,ggplot默认不会连接不同因子水平的点)。
完整代码:
dataset = read.csv("MOCK_DATA3.csv") beoorGraph_data <- dataset %>% mutate(Maand = factor(Maand, levels = c("November", "December", "January", "February", "March", "April"))) ggplot(beoorGraph_data, aes(x= Maand, y=Klanttevredenheid))+ geom_point()+ # 绘制每月平均值折线,红色加粗 stat_summary(fun = mean, geom = "line", aes(group = 1), color = "red", size = 1)+ # 可选:添加平均值点,更直观 stat_summary(fun = mean, geom = "point", color = "red", size = 3)+ labs(title="Klanttevredenheid")
方案二:先计算平均值再绘制折线
先用dplyr分组计算每月评分均值,再将结果作为新数据集传入geom_line,同样需要设置group=1。这种方式更灵活,方便后续对平均值数据做进一步处理。
完整代码:
dataset = read.csv("MOCK_DATA3.csv") beoorGraph_data <- dataset %>% mutate(Maand = factor(Maand, levels = c("November", "December", "January", "February", "March", "April"))) # 分组计算每月平均评分,na.rm=TRUE处理缺失值 monthly_avg <- beoorGraph_data %>% group_by(Maand) %>% summarize(avg_tevredenheid = mean(Klanttevredenheid, na.rm = TRUE)) ggplot(beoorGraph_data, aes(x= Maand, y=Klanttevredenheid))+ geom_point()+ # 用预计算的平均值绘制折线,蓝色加粗 geom_line(data = monthly_avg, aes(x = Maand, y = avg_tevredenheid, group = 1), color = "blue", size = 1)+ # 可选:添加平均值点 geom_point(data = monthly_avg, aes(x = Maand, y = avg_tevredenheid), color = "blue", size = 3)+ labs(title="Klanttevredenheid")
内容的提问来源于stack exchange,提问作者mike G
相关产品推荐
相关产品推荐

