我有一些x和y数据,我想在ggplot2散点图上进行比较。 我想添加一个统一线(y = x),两个(y = 2x),一半(y = x/2)和更平滑的线条来帮助理解数据,但我找不到如何将这些线添加到情节的传说。任何想法?ggplot2:如何添加添加到散点图的线的图例?
set.seed(123)
x <- runif(20, 1, 10)
y <- 0.8 * x + runif(20, -1, 1)
cat <- factor(c(rep("high", 10), rep("low", 10)))
d <- data.frame(x, y, cat)
ggplot(data=d) +
geom_point(aes(x, y, colour=cat)) +
geom_abline(aes(intercept=0, slope=1), col = "red") +
geom_abline(aes(intercept=0, slope=0.5), col="blue", linetype="dotted") +
geom_abline(aes(intercept=0, slope=2), col="blue", linetype="dashed")+
geom_smooth(aes(x, y))
y vs x scatter plot in ggplot2
我希望标签的单一线“,“双重”,“一半”和“平滑”出现以下图例中的“高”和“低”的标签。
继用户3640617的回答之后,我尝试了下面的代码,但结果仍然不令人满意,因为数据点现在在图例中链接了一个线型和平滑线型。
ggplot(data=d) +
geom_point(aes(x, y, colour=cat)) +
geom_abline(aes(intercept=0, slope=1, colour="y = x")) +
geom_abline(aes(intercept=0, slope=.5, colour="y = x/2")) +
geom_abline(aes(intercept=0, slope=2, colour="y = 2x")) +
geom_smooth(aes(x,y, colour="smooth")) +
scale_color_manual(
values=c("red", "darkgreen", "black", "blue", "red", "blue")) +
scale_linetype_manual(
values=c("blank", "blank", "solid", "dashed", "solid", "dotted")) +
scale_shape_manual(values=c(1, 1, NA, NA, NA, NA))
另外,我似乎不能够手动更改tinetypes:
scatter plot with ablines and smoother
我知道,我可以简单地选择其他颜色,会有更少的混乱,但它应该是可能只有点和线的点的图例,而不是点和线的点数分别为和,或者不是?
ggplot2似乎被aes
之后color
或linetype
的加入打扰。将这些行添加到图例时,类别的顺序似乎发生了变化。
谢谢你为这个有用的答案!它适用于多行。浏览额外的数据框似乎并不是必要的,它对我而言没有定义额外数据框中的统一线。看起来,ggplot2一旦我尝试指定线型和/或颜色,就会被打扰,并且它会从图例中删除线条。此外,图例显示了一些符号,我需要弄清楚如何删除。 (请参阅下面的答案) – yanfri