我正在尝试使用来自其他类似问题的线索,在ggplot2
和hlines
ablines
中创建一个图例。我接近使用以下代码(和示例图像)得到我需要的东西,但我似乎无法摆脱跨越图例图标的额外线条。
p <- ggplot(mtcars, aes(x = wt, y=mpg, col = factor(cyl))) + geom_point()
p + geom_hline(aes(lty="foo",yintercept=20)) +
geom_hline(aes(lty="bar",yintercept=25)) +
geom_hline(aes(lty="bar",yintercept=30)) +
geom_abline(aes(lty = "regression", intercept = 10 , slope = 1)) +
scale_linetype_manual(name="",values=c(2,3,1))
仅当我包含abline
时,才会显示图例中的此行为。没有它,hline
都会在图例中显示。
我在这里缺少什么?
作为辅助点:这两个hlines(标记为&#34; bar&#34;此处)这里使用完全相同的配置,但yintercept
具有不同的值。我无法使用相同的命令绘制它们,并收到错误(Error: Aesthetics must be either length 1 or the same as the data (32): linetype, yintercept
)。
每当我复制并粘贴这样的命令时,感觉就像我做得不对。是否可以设置两个yintercepts
,同时手动定义线型以创建图例?
答案 0 :(得分:2)
您可以在show.legend
:
geom_abline
ggplot() +
geom_point(aes(x = mtcars$wt, y=mtcars$mpg, col = factor(mtcars$cyl))) +
geom_hline(aes(lty=c("foo", "bar","bar"),yintercept=c(20,25,30))) +
geom_abline(aes(lty = "regression", intercept = 10 , slope = 1), show.legend = F) +
scale_linetype_manual(name="",values=c(2,3,1) )
如果你没有在ggplot命令中定义数据,你可以只用一个命令定义所有的hlines:
ggplot(mtcars, aes(x = wt, y=mpg, col = factor(cyl))) + geom_point() +
geom_hline(aes(lty="foo",yintercept=20)) +
geom_hline(aes(lty="bar",yintercept=25)) +
geom_hline(aes(lty="bar",yintercept=30)) +
geom_abline(aes(lty = "regression", intercept = 10 , slope = 1), show.legend = F) +
scale_linetype_manual(name="",values=c(2,3,1) )