2017-02-28 4 views
2

Ich möchte eine facet_grid mit unausgeglichenen Beobachtungen für die Kombinationen von Variablen, die für die Facettierung, z.Verwendung von Geom_rect mit Facetten

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 

.. und fügen Sie ein geom_rect, die gleich in jeder Facette sein sollte.

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

Aber es scheint, als ob mehrere geom_rect s auf aufeinander aufgetragen werden, auch wenn ich nicht aes() überhaupt verwendet werde. Wie kann ich das verhindern, damit sie in jeder Facette gleich aussehen?

+1

@Axeman ah danke, kopiert und die falschen Zeilen eingefügt;) – beetroot

Antwort

4

Da Sie nicht wirklich Daten verwenden, um die Berichte zu plotten, sollten Sie später eine annotate verwenden, damit sie nicht an die Daten oder Facetten gebunden ist. Zum Beispiel

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

Alternativ liefern Daten an die geom_raster Schicht:

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

Verwandte Themen