使用geom_rect与分面绘图

4

我想绘制一个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)

这里输入图片描述

但是看起来好像有几个 geom_rect 在重叠绘制,即使我根本没有使用 aes()。如何防止这种情况发生,使得它们在每个小图中都相同?

2个回答

6

由于您并没有真正使用数据来绘制矩形,因此应该稍后使用 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)

2

或者,向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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接