如何在R语言ggplot图例中手动添加geom_vline竖直线
如何在ggplot中为竖直线添加图例?
你想要给代表政策起始时间的竖直线添加图例,但直接设置show_legend = TRUE没效果,这是因为geom_vline默认不会将非映射的属性纳入图例生成逻辑。下面是两种可行的解决方法:
方法一:通过线型(linetype)映射生成图例
把线型属性放到aes()里,给竖直线指定一个标识名称,再手动定义对应的线型样式:
df <- tibble(year = 2010:2014, value = c(1,2,3,3,4)) df %>% ggplot(aes(x = year, y = value)) + geom_line() + # 将linetype映射到aes中,命名为"政策实施" geom_vline(aes(xintercept = 2012, linetype = "政策实施")) + # 指定该图例项对应的线型(4代表虚线) scale_linetype_manual(values = 4) + # 自定义图例标题 labs(linetype = "关键事件")
方法二:通过颜色(color)映射生成图例
如果想用颜色区分竖直线,也可以把颜色属性放入aes(),配合颜色手动映射:
df %>% ggplot(aes(x = year, y = value)) + geom_line() + # 将color映射到aes中,命名为"政策实施" geom_vline(aes(xintercept = 2012, color = "政策实施"), linetype = 4) + # 指定该图例项对应的颜色 scale_color_manual(values = "#FF5733") + # 自定义图例标题 labs(color = "关键事件")
核心逻辑
只有当属性(比如linetype、color)被放入aes()内作为映射变量时,ggplot才会为其生成图例。直接在geom_vline外设置的属性属于全局样式,不会触发图例生成,这也是show_legend = TRUE无效的原因。
内容的提问来源于stack exchange,提问作者uow
相关产品推荐
相关产品推荐

