Kategoriske variabler kan presenteres med facets i ggplot2. En facet er en graf som utgjør en undergruppe i datasettet. For å lage facets finnes funksjonene facet_wrap() eller facet_grid(). Førstnevnte (facet_wrap()) brukes til å lage facets basert på én variabel. Sistnevnte (facet_grid()) brukes til å lage facets basert på to eller flere variabler. Variablene som skal brukes som facets, angis etter tegnet tilde (~). I denne sammenhengen brukes termen facet om de enkelte grafene. Hver facet presenterer en undergruppe i dataene og kan dermed betraktes som en subgraf. Facets skal, fra et teknisk perspektiv, ikke forveksles med paneler, som omtales i neste kapittel.
Facet Wrap: facet_wrap()
I figuren nedenfor brukes facet_wrap() med kolonnen class (som angir hvilken kjøretøytype bilen tilhører). Dette bør gi separate grafer for hver kjøretøyklasse.
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=3) +
facet_wrap(class ~ .)
Legg merke til følgende i figuren ovenfor:
- Alle subgrafer (paneler) har samme skala på x-aksen og y-aksen.
- Tittelen i hver subgraf tilsvarer ett av nivåene for den kategoriske variabelen (
class) vi brukte ifacet_wrap().
Facet fungerer også for variabler som er numeriske (numeric) eller heltall (integer), noe som fremgår av eksemplet nedenfor, der kolonnen displ (som er numerisk) brukes som facet. Det er imidlertid sjelden meningsfullt å lage facets for en kontinuerlig variabel. Kontinuerlige variabler har ofte mange verdier, noe som kan føre til at noen subgrafer har få eller ingen datapunkter.
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=1) +
facet_wrap(~ displ)
Funksjonen facet_wrap() har argumentene nrow og ncol, som styrer antall rader og kolonner som brukes. I følgende eksempel angir vi at subgrafene skal vises i to kolonner:
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point() +
facet_wrap(~ class, ncol=2)
I følgende eksempel angir vi at subgrafene skal vises på to rader:
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=2) +
facet_wrap(~ class, nrow=2)
Facet Grid: facet_grid()
For å bruke to variabler som facets brukes funksjonen facet_grid(). Variablene angis i dette tilfellet med tilde mellom seg. Foran ~ angis variabelen som plasseres på radene, og etter ~ angis variabelen som utgjør kolonnene, som i følgende eksempel:
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=1.5) +
facet_grid(cyl ~ class)
Du kan bruke et punktum (.) på en av sidene av tilde (~) for å bestemme om subgrafene skal vises radvis eller kolonnevis. Hvis . angis foran ~, vises subgrafene kolonnevis, og omvendt:
## Radvis presentasjon av subgrafer
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=1.5) +
facet_grid(. ~ class) +
labs(title="Punkt innan ~ resulterar i radvis presentation")
## Kolonnevis presentasjon av subgrafer
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=1.5) +
facet_grid(class ~ .) +
labs(title="Punkt efter ~ resulterar i kolumnvis presentation")

Funksjonen facet_grid() aksepterer to variabler på hver side av tilde (~), noe som gjør det mulig å se mønstre i ytterligere undergrupper. Nedenfor følger et eksempel der panelene på radene stratifiseres på to variabler (cyl og drv):
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=1.5) +
facet_grid(cyl + drv ~ class)
Funksjoner i facet_wrap()
Samtlige argumenter i facet_wrap() fremgår nedenfor.
facet_wrap(
facets,
nrow = NULL,
ncol = NULL,
scales = "fixed",
shrink = TRUE,
labeller = "label_value",
as.table = TRUE,
switch = deprecated(),
drop = TRUE,
dir = "h",
strip.position = "top"
)Bruk kommandoen ?facet_grid() for å få instruksjoner for hvert argument. Instruksjonene er lette å forstå for facet_grid() og facet_wrap(). La oss lage en graf der skalaene på x-aksen og y-aksen er frie og optimaliseres automatisk, og der tittelen til hver subgraf havner til venstre for grafen:
ggplot(data=mpg, aes(x = displ,
y = hwy)) +
geom_point(size=1.5) +
facet_wrap(~ class,
# Antall kolonner
ncol=2,
# Lar skalaene på x-aksen og y-aksen være frie
scales="free",
# Subgrafens tittel plasseres til venstre
strip.position = "left"
)
Funksjoner i facet_grid()
facet_grid(
rows = NULL,
cols = NULL,
scales = "fixed",
space = "fixed",
shrink = TRUE,
labeller = "label_value",
as.table = TRUE,
switch = NULL,
drop = TRUE,
margins = FALSE,
facets = NULL
)Facets vs. Panels (subgrafer vs. paneler)
Facets skal ikke forveksles med figurpaneler. I en figur med facets består subgrafene av undergrupper i dataene. I en figur med paneler kan subgrafene bestå av helt ulike datasett. Figurer som består av flere paneler, lages med andre pakker. De mest brukte pakkene er cowplot og gridExtra, som diskuteres i neste kapittel.