如何用ggplot2复现累积移动平均预测图的指定图例?
解决ggplot2预测图中预测区间图例不显示的问题
问题说明
使用ggplot2和forecast包绘制累积移动平均预测图时,已能修改图形颜色,但无法显示“Prediction interval”(预测区间)的图例项,需调整代码让该图例正常显示。
现有代码问题分析
原代码中autolayer(beard.fitted, PI = T)生成的预测区间(ribbon层)默认没有绑定图例映射,因此不会在图例中生成对应项。需要手动为填充层指定图例相关的映射参数。
修改后的完整代码
library(ggplot2) library(forecast) # 读取数据并转换为时间序列对象 beards <- read.csv("percent-of-men-with-full-beards.csv") beard.ts <- ts(beards$Beards, start = 1866) beard.fitted <- meanf(beard.ts, h = 6) # 构建带完整图例的预测图 autoplot(beard.ts, series = "Beards (on men)") + # 添加预测区间,指定fill映射以生成图例项 autolayer(beard.fitted, PI = TRUE, fill = "Prediction interval", alpha = 0.3) + # 添加均值预测线 autolayer(beard.fitted$mean, series = "Mean Estimate") + # 坐标轴与标题设置 xlab("Year") + ylab("Percentage (%)") + ggtitle("Percentage of men with a full beard") + # 配置图例标题 guides( colour = guide_legend(title = "Data series"), fill = guide_legend(title = "Prediction interval") ) + # 手动指定数据系列颜色和预测区间填充色 scale_color_manual(values = c("darkgreen", "red")) + scale_fill_manual(values = "lightblue")
关键修改点
- 在
autolayer调用预测区间时,添加fill = "Prediction interval",为填充层绑定图例标识,让ggplot识别需要生成对应的图例项; - 新增
scale_fill_manual参数,指定预测区间的填充颜色,确保图例中显示对应色块; - 加入
alpha参数设置预测区间的透明度,避免遮挡底层数据; - 通过
guides统一设置两个图例的标题,区分数据系列和预测区间。
内容的提问来源于stack exchange,提问作者Sean S
相关产品推荐
相关产品推荐

