ggplot2:如何为添加到散点图的线添加图例?

2024-02-20

我有一些 x 和 y 数据,我想在 ggplot2 散点图上进行比较。 我想添加统一线 (y = x)、双重线 (y = 2x)、一半线 (y = x/2) 和更平滑的线来帮助理解数据,但我找不到如何将这些线添加到情节的传奇。任何想法?

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

ggplot2 中的 y vs x 散点图 https://i.stack.imgur.com/tGL40.png

我希望标签“统一线”、“双重”、“一半”和“平滑”出现在图例中的“高”和“低”标签下方。

根据 User3640617 的回答,我尝试了以下代码,但结果仍然不令人满意,因为数据点现在在图例中具有链接到它们的线型和平滑线型。

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:

带有 ablines 和 smoother 的散点图 https://i.stack.imgur.com/mM1Ev.png

我知道,我可以简单地选择其他颜色,这样会减少混乱,但应该可以有一个图例,其中仅点为点,线为线,而不是点and线既是点又是线,还是不是?

ggplot2 似乎被添加所困扰color or linetype之后aes。将线条添加到图例时,类别的顺序似乎发生了变化。


您可以将字符值映射到未使用的美学,以欺骗 ggplot 为您制作图例:

ggplot(data=d) +
  geom_point(aes(x, y, colour=cat)) +
  geom_abline(aes(intercept=0, slope=1, lty='unity line'), col = "red")

Use + scale_linetype(name = NULL) or labs(linetype = NULL)删除linetype传奇标题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplot2:如何为添加到散点图的线添加图例? 的相关文章

随机推荐