R ggplot:facet中的不同geom_ablines

时间:2017-04-29 14:27:59

标签: r ggplot2

我想在我的两个方面绘制两个不同的geom_abline。这似乎与geom_hline的工作方式不同 - 答案为here

虽然

library(ggplot2)
dummy1 <- expand.grid(X = factor(c("A", "B")), Y = rnorm(10))
dummy1$D <- rnorm(nrow(dummy1))
dummy2 <- data.frame(X = c("A", "B"), Z = c(1, 0))
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) + 
    geom_hline(data = dummy2, aes(yintercept = Z))

..有效,这个:

library(ggplot2)
dummy1 <- expand.grid(X = factor(c("A", "B")), Y = rnorm(10))
dummy1$D <- rnorm(nrow(dummy1))
dummy2 <- data.frame(X = c("A", "B"), Z = c(1, 0))
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) + 
   geom_abline(data = dummy2, aes(yintercept = Z), slope = 1)

没有:

abline using facets

Y-intercept不受影响。

1 个答案:

答案 0 :(得分:4)

对于geom_abline,您需要intercept而不是yintercept。此外,您需要在aes内映射这两个值,否则设置slope会覆盖您使用aes设置的值。这有效:

library(ggplot2)
dummy1 <- expand.grid(X = factor(c("A", "B")), Y = rnorm(10))
dummy1$D <- rnorm(nrow(dummy1))
dummy2 <- data.frame(X = c("A", "B"), Z = c(1, 0))

ggplot(dummy1, aes(x = D, y = Y)) +
  geom_point() +
  facet_grid(~X) + 
  geom_abline(data = dummy2, aes(intercept = Z, slope = 1))