使用subset子集绘制ggplot2图表时如何添加并自定义图例
正确配置图例的代码示例
ggplot(all.months,aes(x=SalesMonth,y=MonthlySales)) + geom_line(aes(color=ActOrPred, linetype=ActOrPred), size=3) + expand_limits(y=c(0,310000)) + scale_y_continuous(labels = comma) + scale_x_date(date_labels="%b %y",breaks ="2 month",expand=c(.06,1)) + scale_color_manual( labels = c("实际值", "预测值"), values = c("#69b3a2", "gray") ) + scale_linetype_manual( labels = c("实际值", "预测值"), values = c("solid", "dashed") ) + labs( title = "Forecast: Mountain-200 Black, 38", x="Sales Month", y="Revenue", color = "数据类型", linetype = "数据类型" ) + theme_bw() + theme( plot.title = element_text(color = "#2CC4C4",size = 12,face = "bold",hjust = 0.5), axis.line = element_line(color = "gray"), axis.text.x = element_text(size = 7), axis.text.y = element_text(size = 7), axis.title.x = element_text(size = 8), axis.title.y = element_text(size = 8), panel.border = element_blank(), legend.title = element_text(size = 9, face = "bold") ) + geom_smooth(method='lm',position="identity",se=F,size=0.4,color="black")
核心配置说明
- 自定义图例文本:在
scale_*_manual系列函数的labels参数中传入和分组值对应的文本数组即可,顺序要和分组变量的取值顺序一致(本案例中分组变量ActOrPred取值为A、P,所以labels顺序对应实际值、预测值) - 自定义图例标题:有两种生效方式,一是在
labs参数中给对应映射的属性(本案例为color、linetype)赋值标题,二是直接在scale_*_manual的name参数里设置,两种方式效果一致。注意theme(legend.title = element_text())仅用来调整图例标题的显示样式(字体、字号、颜色等),不负责设置标题内容 - 多属性映射合并图例:如果同时映射了color和linetype两个属性,只要保证两者的图例标题、文本标签完全一致,ggplot会自动将两个属性的图例合并为一个,同时展示颜色和线型区别,和图表实际表现完全匹配
内容的提问来源于stack exchange,提问作者Ashley C
相关产品推荐
相关产品推荐

