在ggplot中生成仅标注geom_vline垂直线的自定义图例
给ggplot的geom_vline添加独立图例的实现方法
完全可以实现,核心逻辑是通过给geom_vline的美学映射(aes)传入自定义标识,手动生成专属图例,同时关闭原有数据图层的图例显示避免干扰,修改后的参考代码如下:
ggplot(weektotals, aes(x=week, y=total)) + # 原有数据图层设置show.legend=F,不参与图例生成 geom_line(color="red", show.legend = FALSE) + geom_point(show.legend = FALSE) + # 垂直虚线图层将样式属性放入aes,映射自定义的说明文本 geom_vline(xintercept=as.Date("27/03/20", format = "%d/%m/%y"), aes(color = "2020年政策调整日", linetype = "2020年政策调整日", size = "2020年政策调整日") ) + # 手动指定垂直虚线的实际样式,同时设置图例名称 scale_color_manual(name = NULL, values = c("2020年政策调整日" = "darkred")) + scale_linetype_manual(name = NULL, values = c("2020年政策调整日" = "dotted")) + scale_size_manual(name = NULL, values = c("2020年政策调整日" = 1))
调整要点说明:
- 自定义的说明文本(示例里的2020年政策调整日)可以替换成你需要的图例文字,三个映射项的文本要保持一致,才会合并成同一个图例项
- 如果需要显示图例标题,把三个scale里的name参数替换为对应标题文字即可,不需要就保留NULL
- 如果后续要调整图例的位置、大小等样式,可以再加
theme()函数对legend相关参数做调整
内容的提问来源于stack exchange,提问作者Simon Hall
相关产品推荐
相关产品推荐

