如何为展示多组预测结果的ggplot折线图添加对应标签图例
解决方法
ggplot只有当你把颜色这类美学参数放在aes()内部映射到变量时,才会自动生成对应图例。你当前的代码是把折线颜色硬编码在aes()外部,所以不会生成折线的标签图例,只要调整geom_line的颜色映射逻辑,再手动绑定颜色和标签即可,原有标题、副标题、说明类配置都不需要改动。
修改后的完整代码如下:
library(ggplot2) ggplot(Forecast_df, aes(date)) + geom_tile(aes(alpha = Recession, y = 1), fill = "grey", height = Inf) + scale_alpha_continuous(range = c(0, 1), breaks = c(0, 1), labels = c("0" = "扩张期", "1" = "衰退期"))+ # 把color放进aes内,值设置为你想要显示的图例标签 geom_line(aes(y = ERVOLY, col = "实际值"), size = .8)+ geom_line(aes(y = ERVOL_vanilla, col = "单因子预测值"), size = .8)+ geom_line(aes(y = ERVOL_twofactor, col = "双因子预测值"), size = .8)+ geom_line(aes(y = ERVOL_threefactor, col = "三因子预测值"), size = .8)+ # 手动绑定标签和对应颜色 scale_color_manual(values = c( "实际值" = "black", "单因子预测值" = "blue", "双因子预测值" = "green", "三因子预测值" = "orange" ), name = "经济变量")+ ylab('未来12个月复合收益率(%)')+ labs(x = NULL, alpha = "经济周期", title = "2021年通胀预期上行", caption = '克利夫兰联储10年期通胀预期模型', subtitle = '"方向性至关重要"')+ theme(plot.background = element_blank(), panel.grid.minor = element_blank(), panel.grid.major= element_blank(), text = element_text( color = "#003366"))
你可以根据自己的需求修改aes(color = "xxx")内的标签文字,只要保证和scale_color_manual内的映射关系对应即可。
内容的提问来源于stack exchange,提问作者MacroChair
相关产品推荐
相关产品推荐

