You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:15:03