如何使用geom_point将abline添加到图例中

时间:2017-04-13 15:21:05

标签: r ggplot2 legend

我正在尝试在ggplot2图中为一个图例添加一个基线。但是,我无法让它发挥作用。有人可以帮忙吗?

示例代码:

## dummy script to test legends with ablines
library(ggplot2)
df1 <- iris
plot12345 <- ggplot(data = iris) +
  geom_point(aes(x = Sepal.Length, y = Sepal.Width, colour = "dummy1")) +
  geom_abline(aes(colour = "dummy2"), intercept = -3, slope = 1) +
  scale_colour_manual(values = c("dummy1" = "blue", "dummy2" = "red"))

这只包括图例中的第一行而不是第二行: enter image description here

1 个答案:

答案 0 :(得分:1)

  1. 为了显示该行的图例,我们可以将interceptslope放入aes。 (我不知道它是如何工作的,但在Hadley的ggplot2书的第146页有类似的例子);

  2. 为了让图例只显示dummy2的行而只显示dummy1的点,我们必须操纵guide_legend来覆盖默认的图例美学。 linetype = c(0, 1)表示空白和实线。

  3. 这是最终代码:

    ggplot(data = iris) +
        geom_point(aes(x = Sepal.Length, y = Sepal.Width,
                       colour = "dummy1")) +
        geom_abline(aes(colour = "dummy2", slope = 1, intercept = -3)) +
        scale_color_manual(
            values = c("dummy1" = "blue", "dummy2" = "red"),
            guide = guide_legend(
                override.aes = list(pch = c(16, NA), linetype = c(0, 1)))
        )
    

    enter image description here