Gå till index

Analys med R

0% färdig
0/0 Steps
  1. Analys och forskning med R och Posit (Rstudio)
  2. Grunderna i R och Rstudio
    7 Ämnen
  3. Importera, exportera, spara och ladda data
    5 Ämnen
  4. Strängar och regular expressions (regex)
    1 Ämne
  5. Bearbetning av data med dplyr
    12 Ämnen
  6. Visualisera och presentera
    14 Ämnen
  7. Explorerande analyser
    6 Ämnen
  8. Prediktionsmodeller
    12 Ämnen
  9. Klassisk regressionsanalys
    8 Ämnen
  10. Machine learning (ML) och Artificiell Intelligens (AI)
    9 Ämnen
  11. Prediktionsmodeller: Tidymodels
  12. Hypotestester
    1 Ämne
Avsnitt 6, Ämne 6
Startad

Facets (subgrafer)

Avsnitt Progress
0% färdig

Kategoriska variabler kan presenteras med facets i ggplot2. En facet är en graf som utgör en subgrupp i datamängden. För att skapa facets finns funktionerna facet_wrap() eller facet_grid(). Förstnämnda (facet_wrap()) används för att skapa facets baserat på en variabel. Sistnämnda (facet_grid()) används för att skapa facets baserat på två eller fler variabler. Variablerna som skall användas som facets specificeras efter tecknet tilde (~). I detta sammanhang används termen facet för de enskilda graferna. Vare facet presenterar en subgrupp i data och kan således betraktas som en subgraf. Facets skall, ur ett tekniskt perspektiv, inte förväxlas med panaler som omtalas i nästa kapitel.

Facet Wrap: facet_wrap()

I nedanstående figur används facet_wrap() med kolumnen class (som indikerar vilken fordonstyp bilen tillhör). Det borde skapa separata grafer för varje fordonsklass.

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point(size=3) +
  facet_wrap(class ~ .)

Notera följande av figuren ovan:

  • Alla subgrafer (paneler) har samma skala på x-axel och y-axel.
  • Titeln i varje subgraf motsvarar en av nivåerna för den kategoriska variabeln (class) vi använde i facet_wrap().

Facet funger även för variabler som är numeriska (numeric) eller heltal (integer), vilket framgår av exemplet nedan där kolumnen displ (som är numerisk) används som facet. Det är dock sällan meningsfullt att skapa facets för en kontinuerlig variabel. Kontinuerliga variabler har ofta många värden vilket kan resultera i att vissa subgrafer har få eller inga datapunkter.

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point(size=1) +
  facet_wrap(~ displ)

Funktionen facet_wrap() har argumenten nrow och ncol vilka styr antal rader och kolumner som används. I följande exempel anger vi att subgraferna skall visas i två kolumner:

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point() +
  facet_wrap(~ class, ncol=2)

I följande exempel anger vi att subgraferna skall visas på två rader:

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point(size=2) +
  facet_wrap(~ class, nrow=2)

Facet Grid: facet_grid()

För att använda två variabler som facets används funktionen facet_grid(). Variablerna anges i detta fall med tilde mellan dem. Innan ~ anges variabeln som placeras på raderna och efter ~ anges variabeln som utgör kolumnerna, enligt följande exempel:

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point(size=1.5) +
  facet_grid(cyl ~ class)

Du kan använda en punkt (.) på endera sida av tilde (~) för att bestämma om subgraferna skall visas radvis eller kolumnvis. Om . anges innan ~ visas subgraferna kolumnvis och vice versa:

R
# Radvis presentation 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")

# Kolumnvis presentation 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")

Funktionen facet_grid() accepterar två variabler på endera sida av tilde (~), vilket möjliggör att se mönster i ytterligare subgrupper. Nedan följer ett exempel där panelerna på raderna stratifieras på två variabler (cyl och drv):

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point(size=1.5) +
  facet_grid(cyl + drv ~ class)

Funktioner i facet_wrap()

Samtliga argument i facet_wrap() framgår nedan.

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"
)

Använd kommandot ?facet_grid() för att få instruktioner för varje argument. Instruktionerna är lätta att förstå för facet_grid() och facet_wrap(). Låt oss skapa en graf där skalorna på x-axeln och y-axeln är fria och optimeras automatiskt, samt där varje subgrafs titel hamnar till vänster om grafen:

R
ggplot(data=mpg, aes(x = displ,
                     y = hwy)) + 
  geom_point(size=1.5) +
  facet_wrap(~ class,
             # Antal kolumner
             ncol=2,
             # Låter skalorna på x-axel och y-axel vara fria
             scales="free",
             # Subgrafens titel placeras till vänster
             strip.position = "left"
             )

Funktioner i facet_wrap()

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 ska inte förväxlas med figurpaneler. I en figur med facets består subgraferna av subgrupper i data. I en figur med paneler kan subgraferna bestå av helt olika datamängder. Figurer som består av flera paneler skapas med andra paket. De mest använda paketen är cowplot och gridExtra, som diskuteras i nästkommande kapitel.