2017-02-28 28 views
2

我想繪製一個facet_grid,其中包含用於構造構面的變量組合的不平衡觀察值。使用帶有構面的geom_rect

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 s的繪製在彼此的頂部,即使我不使用aes()可言。我怎樣才能防止它們在每個方面看起來都一樣?

+1

@Axeman感謝啊,複製&粘貼錯線;) – beetroot

回答

4

由於您沒有真正使用數據來繪製矩形,因此您應該稍後使用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

可替換地,供應數據至geom_raster層:

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