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"))))