【问题标题】:How to add legend for vertical lines in ggplot?如何在ggplot中为垂直线添加图例?
【发布时间】:2015-03-05 19:10:40
【问题描述】:

我试图显示一个带有一些垂直线的折线图作为特定时间点的指标,并有一个标记这些时间点的图例。

基于本书ggplot2的6.4.4节中的示例,我尝试了以下

huron<-data.frame(year=1875:1972,level=LakeHuron)

vertDf<-data.frame(years=c(1900,1925,1950),labels=c("A","B","C"))

pltWithLines<-ggplot(huron, aes (x=year,y=level)) +
                              geom_line() + 
                              geom_vline(aes(xintercept=years,color=labels),data=vertDf) + 
                              scale_color_manual("Sample Year",
                                      values=c("A"="blue","B"="red","C"="green"))

这会生成一个带有正确颜色的垂直线的图表,但根本没有图例。

这有什么问题?

【问题讨论】:

    标签: r ggplot2 legend


    【解决方案1】:

    你需要show_guide

    ggplot(huron, aes (x=year,y=level)) +
      geom_line() + 
      geom_vline(aes(xintercept=years, color=labels),data=vertDf, show_guide=T) + 
      scale_color_manual("Sample Year",
                         values=c("A"="blue","B"="red","C"="green"))
    

    【讨论】:

    • 这行得通,谢谢。这方面的文档很奇怪。前几次我在 geom_vline 的帮助中查找 show_guide 的文档,我没有看到它。我认为这是因为函数原型中的参数与它们的列表顺序不同。
    • show_guide 已被弃用,取而代之的是 show.legend