Ogólna reguła robi nic w ggplot2 jest,
- utworzyć ramkę danych, który koduje informacje, które chcesz wykreślić
- przekazać tę ramkę danych do GEOM
Jest to nieco bardziej skomplikowane w tym przypadku ze względu na szczególny aspekt wykresu, który chcesz zmienić. Moce, które mają być zaprojektowane ggplot2 w sposób, który oddziela elementy danych z działki (to znaczy od elementów geologicznych) od elementów innych niż dane (to jest motywów), a tak się składa, że tło wykresu należy do kategorii "inne niż dane".
Zawsze istnieje możliwość modyfikowania podstawowej siatki obiektu manually ale jest to żmudne i dane mogą ulec zmianie z różnymi wersjami ggplot2. Zamiast tego użyjemy "hacka", o którym Hadley mówi w pytaniu this.
#Create a data frame with the faceting variables
# and some dummy data (that will be overwritten)
tp <- unique(tips[,c('sex','day')])
tp$total_bill <- tp$tip <- 1
#Just Fri
ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_rect(data = subset(tp,day == 'Fri'),aes(fill = day),xmin = -Inf,xmax = Inf,
ymin = -Inf,ymax = Inf,alpha = 0.3) +
geom_point(shape=1) +
facet_grid(sex ~ day)
#Each panel
ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_rect(data = tp,aes(fill = day),xmin = -Inf,xmax = Inf,
ymin = -Inf,ymax = Inf,alpha = 0.3) +
geom_point(shape=1) +
facet_grid(sex ~ day)
Dzięki znacznie za pomoc. Zdecydowanie przydatny. – broccoli
Należy zauważyć, że ustawienie panel.background i powyższe geom_rect zachowują się inaczej, gdy za geom_raster, ponieważ optymalizacja może mieć miejsce, gdy za rastrem jest "nic". Zapisany jako plik pdf, wersja geom_rect jest znacznie większym plikiem i praktycznie nie do otwarcia dla większości przeglądarek pdf! – momeara
Czy można to zrobić za pomocą funkcji ciągłej i skali? – UnivStudent