Czytałem ggplot2
dokumentację obu funkcji. Zastanawiałem się, jakie są różnice i jaka byłaby właściwa sytuacja dla użycia każdej funkcji ( facet_wrap()
i facet_grid()
).
library(ggplot2)
p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl)
p + facet_grid(~ cyl)
Podaję ten mały przykład jako punkt wyjścia. Różnica wydaje się polegać na tym, że zawijanie sprawia, że działki są bardziej autonomiczne, a siatka tworzy razem jedną działkę.
źródło
facet_wrap(...)
łańcuchy razemggplots
w różnych ramkach (fasetach) na podstawie jednej zmiennej.facet_grid(...)
może przyjmować dwie zmienne:p + facet_grid(cyl~class)
Możesz również użyć trzeciej zmiennej, aby pogrupować każdy aspekt:
qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class)
pokazuje poprawę (lub jej brak) w stosunku do przemieszczenia w stosunku do liczby cylindrów i klasy.
źródło
facet_wrap
może również przyjmować dwie zmienne.Cytując głównie z książki ggplot2, s. 148f.
Istnieją trzy rodzaje fasetowania:
facet_null()
: pojedynczy wykres, domyślny.facet_wrap()
: "zawija" 1d wstęgę paneli w 2d.facet_grid()
: tworzy siatkę 2D paneli zdefiniowanych przez zmienne, które tworzą wiersze i kolumny.Owijanie faset
facet_wrap()
tworzy długą wstążkę paneli (generowaną przez dowolną liczbę zmiennych) i zawija ją w 2d. Jest to przydatne, jeśli masz jedną zmienną z wieloma poziomami i chcesz ułożyć działki w sposób bardziej efektywny pod względem przestrzeni.Można kontrolować jak taśma jest owinięty w siatce z
ncol
,nrow
,as.table
idir
.ncol
inrow
kontroluj liczbę kolumn i wierszy (wystarczy ustawić jedną).as.table
kontroluje, czy aspekty są rozmieszczone jak tabela (TRUE
), z najwyższymi wartościami w prawym dolnym rogu, czy jako plot (FALSE
), z najwyższymi wartościami w prawym górnym rogu.dir
Sterowanie kierunkiem opasania: H orizontal lub V ertical.Siatka fasetowa
Od
?facet_grid
:facet_grid()
tworzy macierz paneli zdefiniowanych przez zmienne fasetowania wierszy i kolumn. Jest to najbardziej przydatne, gdy masz dwie zmienne dyskretne, a wszystkie kombinacje zmiennych istnieją w danych.Możesz użyć wielu zmiennych w wierszach lub kolumnach, „dodając” je razem, np
a + b ~ c + d
.facet grid()
ma dodatkowy parametr o nazwiespace
, który przyjmuje takie same wartości jakscales
.# If scales and space are free, then the mapping between position # and values in the data will be the same across all panels. This # is particularly useful for categorical axes ggplot(subset(mpg, manufacturer %in% c("audi", "honda", "toyota")) , aes(drv, model)) + geom_point() + facet_grid(manufacturer ~ ., scales = "free", space = "free") + theme(strip.text.y = element_text(angle = 0))
(uproszczony) Przykład zaczerpnięty z
?facet_grid
źródło
W przypadku wykresów z pojedynczą zmienną można użyć opcji
facet_grid()
lubfacet_wrap()
.facet_wrap(~variable)
zwróci symetryczną macierz wykresów dla liczby poziomówvariable
.facet_grid(.~variable)
zwróci aspekty równe poziomomvariable
rozłożonym w poziomie.facet_grid(variable~.)
zwróci aspekty równe poziomomvariable
rozproszonym w pionie.źródło
facet_wrap(~variable)
a niefacet_wrap(variable~)
?