将geom_rect与facet一起使用

时间:2017-02-28 15:03:09

标签: r ggplot2

我想用facet_grid为用于刻面的变量组合绘制不平衡观察值,例如

dat <- data.frame(x = 1:6, 
                  y = 0:5, 
                  group = rep(c("A", "B"), each = 3),
                  var = rep(c("a", "a", "b"), times = 2))

> dat
  group var x y
1     A   a 1 0
2     A   a 2 1
3     A   b 3 2
4     B   a 4 3
5     B   a 5 4
6     B   b 6 5

..并添加geom_rect,每个方面应该相同。

ggplot(dat) +
  geom_rect(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
  geom_point(aes(x = x, y = y)) +
  facet_grid(group~var)

enter image description here

但似乎有几个geom_rect被绘制在彼此之上,即使我根本没有使用aes()。我怎样才能防止它们在每个方面看起来一样?

2 个答案:

答案 0 :(得分:4)

由于您并未真正使用数据来绘制rects,因此您应该稍后使用annotate,因此它与数据或方面无关。例如

ggplot(dat) +
  annotate("rect", xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3, fill = "red", alpha = .3) +
  geom_point(aes(x = x, y = y)) +
  facet_grid(group~var)

答案 1 :(得分:1)

或者,向geom_rect图层提供数据:

ggplot(dat) +
  geom_rect(aes_all(vars = c('xmin', 'xmax', 'ymin', 'ymax')), fill = "red", alpha = .3,
            data.frame(xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = 3)) +
  geom_point(aes(x = x, y = y)) +
  facet_grid(group~var)

enter image description here