R 为一组点线图和垂直线图提供单独的图例

R 为一组点线图和垂直线图提供单独的图例,r,plot,ggplot2,R,Plot,Ggplot2,示例数据帧(如果有更好/更惯用的方法,请告诉我): 不是我想的那样,垂直线没有图例 一个小的修改(我不明白为什么geom_vline是少数几个带有show.legend参数的几何图形之一,而且默认为FALSE!): p一种可能的方法是添加一个额外的虚拟美学,如fill=,我们随后将使用它与scale\u fill\u manual()一起创建第二个图例: 我会给你+2的神奇Rick头像,但唉,我只能给你+1的好答案:)我得到了覆盖的需要。aes在scale\u fill\u manual中,但

示例数据帧(如果有更好/更惯用的方法,请告诉我):

不是我想的那样,垂直线没有图例

一个小的修改(我不明白为什么
geom_vline
是少数几个带有
show.legend
参数的几何图形之一,而且默认为
FALSE
!):


p一种可能的方法是添加一个额外的虚拟美学,如
fill=
,我们随后将使用它与
scale\u fill\u manual()
一起创建第二个图例:


我会给你+2的神奇Rick头像,但唉,我只能给你+1的好答案:)我得到了
覆盖的需要。aes
scale\u fill\u manual
中,但是为什么你必须移动
show.legend=TRUE
geom\u行
几何体中?这是正确的,因为否则解决方案就不起作用了,但我不明白为什么。你也可以把它放在
geom_vline()
中,但出于某种原因,这会弄乱图例的显示方式。这似乎是一个已知但尚未完全解决的问题,请参见:
n <- 10  
group <- rep(c("A","B","C"),each = n)
x   <- rep(seq(0,1,length = n),3)
y   <- ifelse(group == "A",1+x,ifelse(group == "B",2+2*x,3+3*x))
df  <- data.frame(group,x,y)
xd  <- 0.5
des <- data.frame(xd)
p <- ggplot(data = df, aes(x = x, y = y, color = group)) + geom_point() + geom_line(aes(linetype=group))
p <- p + geom_vline(data = des, aes(xintercept = xd), color = "blue")
p
p <- ggplot(data = df, aes(x = x, y = y, color = group)) + geom_point() + geom_line(aes(linetype=group))
p <- p + geom_vline(data = des, aes(xintercept = xd), color = "blue", show.legend = TRUE)
p   
ggplot(data = df, aes(x = x, y = y, color = group)) + 
        geom_point() + 
        geom_line(aes(linetype=group), show.legend = TRUE) + 
        geom_vline(data = des, 
                   aes(xintercept = xd, fill = "Vertical Line"), # add dummy fill
                   colour = "blue") +
        scale_fill_manual(values = 1, "Design", # customize second legend 
                guide = guide_legend(override.aes = list(colour = c("blue"))))