Skip to Tutorial Content

Mål og forberedelser

Denne arbeidsboken introduserer hvordan man kan plotte og lage grafer med funksjoner fra pakken ggplot2. Denne arbeidsboken går igjennom grunnleggende funksjoner og argumenter som gjør at du skal kunne lage grafene du ønsker. Det finnes også flere tilpasninger utover de som beskrives i arbeidsboken, se gjerne i hjelpefilene til funksjonene du bruker for mer informasjon om argumenter eller prøv google de tilpasningene du ønsker å gjøre.

Mål for arbeidsboken

I denne arbeidsboken skal du lære:

  • Å bygge en graf med ggplot.
  • Å lage forskjellige typer grafer avhengig av dataene du vil visualisere.
  • Å tilpasse utseendet til grafer.

Introduksjon til ggplot2

Det finnes flere ulike måter å plotte på i R. Pakken som vi skal bruke heter ggplot2, og er en del av tidyverse-universet. Vi starter med å laste inn pakken ggplot2 (alternativt kan man bare laste inn tidyverse-pakken):

# Installerer ggplot2. Husker å bruke hermetegn. 
install.packages("ggplot2")
# Henter ggplot2 fra biblioteket.
library(ggplot2)

Det første vi skal gjøre nå er å bli litt kjent med hvordan vi bygger plott med ggplot2. Kort fortalt må vi sette sammen flere argumenter, eller deler med informasjon, for at ggplot() skal vite hva slags plott vi ønsker å lage.

Når vi går gjennom dette nå så kommer vi gradvis til å legge på flere lag i plottet. Når dere koder selv så trenger dere ikke kjøre hver kodebit separat, alt kan kjøres samlet på én gang, slik det ser ut i den siste koden vi lager. Her deler vi opp koden for å forklare hva slags informasjon hver del innheholder og gjør.

PS: Dette trenger dere ikke tenke så mye på akkurat nå, men til en annen gang så er det lurt å huske på at ggplot() vil ha dataene i et “tidy” format, dvs. at hver rad (vannrett) er en observasjon, og hver kolonne er ulike variabler (loddrett).

Data

Steg 1 er å fortelle ggplot hvor den skal hente data fra. Det gjør vi ved å spesifisere hvilket datasett vi ønsker å bruke. I dette tilfellet ønsker vi å bruke datasettet df:

ggplot(data = df)

# Når vi kjører denne koden vil vi kun få et tomt plott, så vi må legge til mer informasjon.

x- og y-aksen

Steg 2 er å spesifisere hva vi ønsker å måle på x- og y-aksen. Det første plottet vi skal lage er et stolpediagram, hvor vi vil vise hvor mange som det er som har stemt og som ikke har stemt i datasettet. Da trenger vi bare å fortelle ggplot at vi vil ha valg på x-aksen. Senere skal vi se på eksempler hvor man legger inn informasjon på begge aksene.

Inne i parentesen hvor vi har fortalt hvilket datasett vi vil bruke, så legger vi til en “mapping”. aes står for aestethics. I aes() forteller vi hvordan vi vil at variablene skal vises visuelt. Her forteller vi ggplot at vi vil at variabelen valg skal vises på x-aksen.

ggplot(data = df, aes(x = valg))

# Her står "Stemt" og "Ikke stemt" på x-aksen, men ellers er plottet tomt. 

Type plott

Steg 3 er å fortelle ggplot hva slags plott vi vil lage. Vi vil lage et stolpediagram, så da bruker vi geom_bar. Hvis du prøver å skrive inn geom_ vil du se at du får en hel rekke forslag til ulike plott. Flere av disse skal vi komme tilbake til.

ggplot(data = df, aes(x = valg)) + geom_bar() 

# Her får vi et stolpediagram som viser observasjonene fordelt på stemmegivning 

Tittel og navn på aksene

Steg 4 er å endre på tittel og navn på aksene, dersom vi ønsker å gjøre det. Dette kan vi gjøre ved å legge til labs().

ggplot(data = df, aes(x = valg)) + geom_bar() + labs(x = "Stemmegivning", y = "Antall respondenter", title = "Stemmegivning blant respondentene")

Ulike typer plott

Man kan lage mange ulike typer plott med ggplot2. Hvilket plott man burde velge kommer an på variablene du vil undersøke og målenivået deres. F.eks. når man har en kontinuerlig variabel som alder eller internettbruk på x-aksen, er det ikke særlig nyttig å bruke et stolpediagram. Med et stolpediagram vil det være en stolpe for hver unike verdi og for en kontinuerlig variabel vil det være veldig mange stolper.

Histogram

Da kan det være mer nyttig med et histogram, som lager stolper for intervaller.

# Bruker geom_histogram()
ggplot(data = df, aes(x = alder)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

# Siden vi ikke har spesifisert noe annet, så velger R som default at det skal være 30 bins eller stolper. 

Hvis vi ikke sier noe annet, så kommer ggplot til å velge hvor stort hvert intervall skal være. Her er det viktige at vi tenker på hvordan vi kan utforme histogrammet, slik at vi på mest effektivt kommuniserer fordelingen til variabelen vi er interessert i. Vi kan sette hver stolpe til å inneholde et intervall på 3 år ved å skrive inn binwidth = 3 i geom_histogram().

# Legger til binwidth
ggplot(data = df, aes(x = alder)) + geom_histogram(binwidth = 3)

Alternativt kan man velge antallet bins vi ønsker med bins. Her sier vi at vi ønsker å ha 15 stolper totalt i histogrammet. Merk at man bare kan bruke binwidth ELLER bins, og ikke begge to samtidig.

# Legger til bins
ggplot(data = df, aes(x = alder)) + geom_histogram(bins = 15)

Hvis vi vil se hvordan alder fordeler seg på stemmegivning kan vi legge til argumentet fill.

# Legger til fill
ggplot(data = df, aes(x = alder, fill = valg)) + geom_histogram(binwidth = 1)

Boksplott

I det forrige plottet, så vi på hvordan alder fordeler seg på stemmegivning Dette kan vi se nærmere på ved hjelp av et boksplott. Boksplott er nyttig når vi skal se på spredningen i et datasett. Vi kan også bruke boksplott til å se på om spredningen til en kontinuerlig variabel varierer mellom kategoriene til en kategorisk variabel.

Først kan vi lage et boksplott med geom_boxplot() som viser spredningen til variabelen alder.

# Bruker geom_boxplot()
ggplot(data = df, aes(y = alder)) + geom_boxplot()

Ved hjelp av fill-argumentet så kan vi spesifisere at vi vil se hvordan spredningen til alder varierer mellom de som har stemt og de som ikke har stemt.

ggplot(data = df, aes(y = alder, fill = valg)) + geom_boxplot()

Tetthetsplott

Tetthetsplott viser distribusjonen til kontinuerlig variabel, og plottet visualiserer sannsynlighetsfordelingen for dataene med en kontinuerlig linje. Her ser vi på tetthetsplottet til variabelen alder med geom_density().

# Bruker geom_density()
ggplot(data = df, aes(x = alder)) + geom_density()

Inne i parentesen til plottypen (i dette tilfellet geom_density) kan vi legge til spesifikasjoner om tykkelse på linjen, farge osv. Tykkelsen på linjen spesifiserer vi med argumentet size og fargen med col. Med fill sier vi hva slags farge selve figuren skal ha. Vi kan også si hvor gjennomsiktig vi vil at plottet skal være med alpha.

# Endrer på size, fill og alpha
ggplot(data = df, aes(x = alder)) + geom_density(size=1.5, fill="pink", col = "blue", alpha=0.3)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Lag et tetthetsplott for variabelen “alder” hvor du endrer tykkelsen på linjen til 2, fargen til blå, og gjennomsiktigheten til 0.1.

ggplot(data = df, aes(x = alder)) + geom_density(size=1.5, fill="pink", alpha=0.3)
ggplot(data = df, aes(x = alder)) + geom_density(size=2, fill="blue", alpha=0.1)

Hvis man ønsker å se hvordan tettshetsplottene for de som har stemt og ikke har stemt er hver for seg, kan man bruke argumentet facet_wrap. Da får man en figur for hver verdi i den variabelen man spesifiserer i dette argumentet.

ggplot(data = df, aes(x = alder)) + geom_density(size=1.5, fill="pink", alpha=0.3) + facet_wrap(vars(valg))

Spredningsplott

Med et spredningsplott kan vi vise sammenhengen mellom to kontinuerlige variabler. Her må vi gi ggplot informasjon om hvilke variabler som skal være på x- og y-aksen. For å lage spredningsplottet så bruker vi geom_point. Her lager vi et plott med alder på x-aksen og internettbruk på y-aksen.

# Bruker geom_point()
ggplot(data = df, aes(x = alder, y = internett)) + geom_point()

Vi kan videre legge til en linje som viser gjennomsnittet i observasjonene med geom_smooth.

# Legger til linje med geom_smooth()
ggplot(data = df, aes(x = alder, y = internett)) + geom_point() + geom_smooth()
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Dersom vi ønsker å skille observasjonene for de som har stemt og de som ikke har stemt fra hverandre kan vi gjøre dette ved å legge til argumentet col i aes(). col står får colour og da vil punktene for de som har stemt og de som ikke har stemt få hver sin farge.

# Legger til farger med col
ggplot(data = df, aes(x = alder, y = internett, col = valg)) + geom_point() + geom_smooth()
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

Legge til linjer

For å legge til helt rette linjer i et plott kan vi bruke geom_hline() (horizontale linjer) og geom_vline() (vertikale linjer). For å kontrollere posisjonen til linjen må spesifisere følgende i aes():

  • geom_hline(): yintercept, altså hvor linjen skal krysse y-aksen.
  • geom_vline(): xintercept, altså hvor linjen skal krysse x-aksen.

I tillegg kan vi forandre på utseendet til linjene med følgende argumenter (merk at disse skal ligge utenfor aes()):

  • alpha: en tall mellom 0 og 1, som spesifiserer hvor gjennomsiktig linjen skal være.
  • colour: et fargenavn, f.eks. “red” (se hele listen av farger med grDevices::colors()) eller en rgb spesifikasjon (se et eksempel på hvordan dette fargesystemet funker her).
  • linewidth: et tall, som spesifiserer hvor tykk linjen skal være og hvor større tall gir en tykkere linje.
  • linetype: enten et tall fra 1 til 6 eller et ord fra listen under, som spesifiserer hva slags type linje det skal være:
    • 1 = “twodash”
    • 2 = “solid”
    • 3 = “longdash”
    • 4 = “dotted”
    • 5 = “dotdash”
    • 6 = “dashed”
    • NA = “blank”
Finn gjennomsnittet til variabelen alder i datasettet df med mean()
mean(df$alder, na.rm = TRUE)
Legg til en linje som viser gjennomsnittet til variabelen alder i histogrammet under med geom_vline().
ggplot(data = df, aes(x = alder)) + geom_histogram()
ggplot(data = df, aes(x = alder)) + geom_histogram() + 
  geom_vline(xintercept = 45.99)
Endre på linjen som viser gjennomsnittet til variabelen internet i søylediagrammet under med geom_vline(), slik at linjen har tykkelse på 2 (linewidth), er av typen “dotted” (linetype), og at den er blå (colour). Husk at fargenavn må skrives på engelsk.
ggplot(data = df, aes(x = internett)) + geom_histogram() + 
  geom_vline(aes(xintercept = 45.99), linewidth = 1, linetype = "dashed", 
                 colour = "pink")
ggplot(data = df, aes(x = internett)) + geom_histogram() + 
  geom_vline(aes(xintercept = 45.99), linewidth = 2, linetype = "dotted", 
                 colour = "blue")

Lagring av plott

Det siste som gjennomgås i denne arbeidsboken er hvordan man kan lagre plott. Underveis i arbeidet, så kan du lagre plottene dine som objekter i environment:

# Lagrer plottet som et objekt
plott <- ggplot(data = df, aes(x = alder, y = internett)) + geom_point()

Dette gjør at du også kan bygge videre på plottene dine uten å få fryktelig lange koder. Hvis vi vil legge til en tittel til plottet, så kan vi nå bare gjøre slik:

plott + labs(title = "Spredningsplott")

Du kan lagre plottene dine i working directory ved å bruke ggsave. For å lagre det siste plottet du har kjørt i R, gjør man følgende: bruk ggsave()-funksjonen, gi plottet et navn, og spesifiser filtypen du vil lagre i.

# png-fil: 
ggsave(filename = "Spredningsplott.png")
# pdf-fil: 
ggsave(filename = "Spredningsplott.pdf")

Bruk ggsave() til å skrive koden du ville brukt for å lagre det siste plottet du kjørte i R, gi plottet navnet “Boksplott”, og lagre det som en pdf-fil.

ggsave(filename = "Boksplott.pdf")

Dersom du ønsker å lagre et plott som du har lagret som et objekt i environment, så legger du til argumentet plot = etterfulgt av det du kalte plottet ditt.

# Lagrer plott med ggsave
ggsave(filename = "Spredningsplott.pdf", plot = plott)

Endre på grafens tittel

Standard tittel: ggtitle()

For å legge til en enkel tittel på en graf du har laget med ggplot2 kan du bruke ggtitle().

# Legger til tittel med ggtitle()
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ggtitle("Spredningsplott")

Legg til en tittel på grafen: “Mitt stolpediagram” med ggtitle().

ggplot(data = df, aes(x = valg)) + geom_bar() 
ggplot(data = df, aes(x = valg)) + geom_bar() + ggtitle("Mitt stolpediagram")

Endre på utseendet til grafens tittel: plot.title

Utseendet til tittelen kan endres med argumentet plot.title = element_text() i theme()-funksjonen.

Her kan man bruke face, size og color:

  • face endrer skrifttypen til tittelen, f.eks. “italic” (kursiv), “bold” (fet) og “underline” (understreket).
  • size endrer størrelsen til tittelen og man bruker tall til å spesifisere hvor stor man ønsker den skal være.
  • color endrer fargen til tittelen og man skriver navnet til fargen på engelsk, f.eks. “blue”.
# Endrer utseendet til tittelen med plot.title
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ggtitle("Spredningsplott") + theme(plot.title = element_text(face = "bold", size = 20, color = "purple"))

Tilpass på utseendet til tittelen med plot.title = element_text() i theme()-funksjonen. Endre skrifttypen til “italic”, størrelsen til 30 og fargen til “green”.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ggtitle("Spredningsplott")
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ggtitle("Spredningsplott") + theme(plot.title = element_text(face = "italic", size = 30, color = "green"))

Endre på posisjonen til grafens tittel: plot.title

Utseendet til tittelen kan også endres med argumentet plot.title = element_text() i theme()-funksjonen.

Her bruker man hjust og vjust, som begge tar verdier mellom 0 og 1:

  • hjust endrer tittelens horizontale posisjon.
  • vjust endrer vertikale posisjon.
# Endrer posisjonen til tittelen med hjust og vjust 
ggplot(data = df, aes(x = internett, y = alder))+ geom_point() + ggtitle("Spredningsplott") + theme(plot.title = element_text(hjust = 0.7, vjust = 1))

Endre på posisjonen til tittelen med plot.title = element_text() i theme()-funksjonen. Endre hjust til 0.2 og vjust til 0.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ggtitle("Spredningsplott")
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ggtitle("Spredningsplott") + theme(plot.title = element_text(hjust = 0.2, vjust = 0))

Endre på akser

Man kan lage helt enkle grafer i ggplot2 hvor man kun tar med den informasjonen som kreves for å lage grafen. Da vil grafen din få et “default” utseende. I grafen under ser vi spredningsplottet som har blitt spesifisert med geom_point(), samt navnene til variablene på x-aksen og y-aksen slik de står i datasettet. Denne grafen gir oss den informasjonen vi trenger, men ofte vil vi tilpasse aksene for å tydeliggjøre hva man ser i grafen.

# Standard spredningsplott uten endringer
ggplot(data = df, aes(x = internett, y = alder)) + geom_point()

Tilpass titlene til aksene: xlab() og ylab()

Med xlab() og ylab() kan man endre på tittelen til x-aksen og y-aksen. Dersom man ikke endrer på tittelene vil de automatisk bli satt til navnet på variabelen som tilhører aksen.

# Her har vi endret på tittelen til x-aksen.
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + xlab("Respondentenes internettbruk")

Legg til en tittel på y-aksen med ylab(). Kall aksen “Respondentenes alder”.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  xlab("Respondentenes internettbruk")
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + xlab("Respondentenes internettbruk") + 
  ylab("Respondentenes alder")

Tilpass utseende til aksetitlene: axis.title()

Når man jobber med ggplot kan man endre de ulike delene av grafen med theme-argumentet. Innad i theme så konotrollerer axis.title utseende til aksetitlene. De ulike elementene inne i axis.title ligger i element_text.

Her bruker man de samme uttrykkene som i plot.title, altså face, size og color:

  • face endrer skrifttypen til tittelen, f.eks. “italic” (kursiv), “bold” (fet) og “underline” (understreket).
  • size endrer størrelsen til tittelen og man bruker tall til å spesifisere hvor stor man ønsker den skal være.
  • color endrer fargen til tittelen og man skriver navnet til fargen på engelsk, f.eks. “blue”.
# Endrer utseendet til aksetitlene med axis.title
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  theme(axis.title = element_text(angle = 60, color = "blue", size = 10, face = "bold")) 

Tilpass på utseendet til tittelen med axis.title = element_text() i theme()-funksjonen. Endre angle til 45, color til “green”, size til 15 og face til “italic”.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  theme(axis.title = element_text(angle = 60, color = "blue", size = 10, face = "bold")) 
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  theme(axis.title = element_text(angle = 45, color = "green", size = 15, face = "italic")) 

Tilpass utseende til akseetikettene: axis.text()

For å endre på utseende til akseetikettene bruker man axis.text som følger samme format som axis.title over. Så man bruker uttrykkene face, size og color i axis.text = element_text.

# Endrer utseendet til akseetikettene med axis.text 
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  theme(axis.text = element_text(angle = 90, color = "pink", size = 20, face = "italic")) 

Tilpass på utseendet til tittelen med axis.text = element_text() i theme()-funksjonen. Endre angle til 60, color til “purple”, size til 10 og face til “bold”.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  theme(axis.text = element_text(angle = 90, color = "pink", size = 20, face = "italic")) 
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + 
  theme(axis.text = element_text(angle = 60, color = "purple", size = 10, face = "bold")) 

Tilpass minimums- og maksimumsverdiene på aksene: xlim() og ylim()

For å velge hva mininimums- og maksimumsverdiene på aksene skal være kan man bruke xlim() og ylim().

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + xlim(0, 2000)

Endre minimumsverdien til -5 og maksimumsverdien til 100 på y-aksen ved hjelp ylim().

ggplot(data = df, aes(x = internett, y = alder)) + geom_point() 
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + ylim(-5, 100)

Bruk av farger

Valg av farger med fill og color

For å velge fargene til figurer kan man bruke fill og color. Disse to har ulike funksjoner. fill brukes til å velge fargen figuren er fyllt med, mens color brukes til å velge fargen på linjen rundt figuren. Man spesifisere fargen ved å skrive: navnet til fargen (på engelsk); rgb-spesifikasjonen (f.eks. #69b3a2); eller NA for å få en gjennomsiktig farge.

# Endrer på fyllet og farget til grafen med color og fill 
ggplot(data = df, aes(x = internett)) + 
  geom_density(color = "blue", fill = "lightpink")

Endre fargen til tetthetsplottet til grønn (green) med fill og fargen på linjen til lilla (purple) med color.

ggplot(data = df, aes(x = internett)) + geom_density() 
ggplot(data = df, aes(x = internett)) + geom_density(color = "green", fill = "purple")

Gi farger til en variabel

For å vise forskjellen mellom observasjoner med bestemte kategoriske verdier innefor en variabel kan man ogå bruke color. I stedenfor å skrive color i geom_-delen av koden, skriver man color i aes(). Det vil også automatisk komme en tegnforklaring (“legend”), som forteller hvilken verdi de ulike fargene tilhører.

# Gir punktene farge basert på nyalder-variabelen med color
ggplot(data = df, aes(x = internett, y = alder, color = nyalder)) + geom_point()

Gi prikkene til de som har stemt og de som ikke har stemt (valg) forskjellig farge ved hjelp av color.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point()
ggplot(data = df, aes(x = internett, y = alder, color = valg)) + geom_point()

Endre på tegnforklaring

Standard tegnforklaring

ggplot2 lager automatisk en tegnforklaring (denne kalles “legend” på engelsk) når man legger til en figur-egenskap til en variabel i aes(). Dvs. hvis man legger til em variabel med color, shape eller alpha, vil en tengforklaring bli lagt til.

# Lager en tegnforklaring ved å legge til variabelen valg med color
ggplot(data = df, aes(x = internett, y = alder, color = valg, shape = nyalder)) + geom_point()

Gi prikkene til respondenter som er under og over 50 år forskjellig farge ved hjelp av color, og gjør prikkene til de som har stemt og de som ikke har stemt (valg) ulikt gjennomsiktige ved hjelp av alpha.

ggplot(data = df, aes(x = internett, y = alder)) + geom_point()
ggplot(data = df, aes(x = internett, y = alder, color = nyalder, alpha = valg)) + geom_point()

Endre tegnforklaring-tittel: labs()

Man kan bruke labs() til å endre på titlene som tegnforklaringene automatisk får. Man kan spesifisere en tittel per seksjon av tegnforklaring, dvs. en hver av utseende-argumentene brukt i aes().

# Endrer på tegnforklaring-titlene med labs() 
ggplot(data = df, aes(x = internett, y = alder, color = valg, shape = nyalder)) + geom_point() + 
  labs(color = "Stemmegivning", shape = "Over/under 50 år")

# Husk å sette hermetegn rundt titlene

Gi legenden til nyalder navnet Variabel 1 og legenden til valg navnet Variabel 2 ved hjelp av labs().

ggplot(data = df, aes(x = internett, y = alder, color = nyalder, shape = valg)) + geom_point()
ggplot(data = df, aes(x = internett, y = alder, color = nyalder, shape = valg)) + geom_point() + 
  labs(color = "Variabel 1", shape = "Variabel 2")

Endre posisjonen til tegnforklaringen: legend.position()

Man velge helt fritt hvor i grafen man vil ha tegnforklaringen Den enkleste måten å gjøre dette på er ved å bruke legend.position i theme() og spesifisere: top, bottom, left eller right.

# Endrer posisjonen til tegnforklaringen med legend.posisjon()
ggplot(data = df, aes(x = internett, y = alder, color = valg, shape = nyalder)) + geom_point() + 
  theme(legend.position = "top")

Plasser legenden under grafen (bottom) ved hjelp av legend.position i theme().

ggplot(data = df, aes(x = internett, y = alder, color = nyalder, shape = valg)) + geom_point()
ggplot(data = df, aes(x = internett, y = alder, color = nyalder, shape = valg)) + geom_point() + theme(legend.position = "bottom")

NB! Dersom du vil tilpasse tegnforklaringen ennå mer kan se på hjelpe-filen til theme() og lese under Arguments for argumentene som tilhører tegnforklaringen (“legend”).

Flere små grafer

Disse to funksjonene lar deg dele en graf inn i flere små grafer. De små grafene visualiserer en spesifikk gruppe av en eller to kategoriske variabler.

En kategorisk variabel: facet_wrap()

Med facet_wrap() kan man bygge flere små grafer ved siden av hverandre basert på verdiene til en kategorisk variabel. Når man bruker facet_wrap() må man skrive facet_wrap(vars()), hvor vars() er funksjon som tolker innputen i konteksten av et datasett.

# Lager to små grafer med facet_wrap()
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + facet_wrap(vars(df$valg))

Bruk facet_wrap() til å lage en graf for respondenter over 50 og en for de under 50 (“nyalder”).

ggplot(data = df, aes(x = internett, y = alder, color = nyalder, shape = valg)) + geom_point()
ggplot(data = df, aes(x = internett, y = alder, color = nyalder, shape = valg)) + geom_point() + 
  facet_wrap(vars(df$nyalder))

To kategoriske variabler: facet_grid()

Med facet_grid() kan man bygge flere små grafer ved siden av hverandre basert på verdiene til to kategoriske variabler.

# Lager fire små grafer med facet_grid
ggplot(data = df, aes(x = internett, y = alder)) + geom_point() + facet_grid(df$valg ~ df$nyalder)

Ulike temaer

Man kan tilpasse ggplot2-grafer man bygger med theme()-funksjonen. I denne arbeidsboken har vi gått igjennom noen av argumentene man kan bruke. For en fullstendig oversikt over de ulike argumentene og hva de endrer på kan du søke opp “theme” i “Help”.

Det finnes også ferdiglagde “temaer”, som man kan bruke til å enkelt endre på utseendet til grafene man lager. Flere av disse temaene er en del av ggplot2, og du kan finne en oversikt over disse ved å søke opp “complete themes” i “Help”. Man kan også hente inn enda flere temaer med pakken ggthemes.

Her har vi laget et helt enkelt stolpediagram:

# Lager et stolpediagram med geom_bar()
ggplot(data = df, aes(x = valg)) + geom_bar() + xlab("Stemmegivning") + ylab("Antall respondenter") + 
  ggtitle("Respondentenes stemmegivning")

Her har vi lagt til et tema, i dette tilfellet theme_bw():

# Legger til temaet theme_bw()
ggplot(data = df, aes(x = valg)) + geom_bar() + xlab("Stemmegivning") + ylab("Antall respondenter") + 
  ggtitle("Respondentenes stemmegivning") + theme_bw()

For dette stolpediagramet har vi valg theme_classic():

# Legger til temaet theme_classic()
ggplot(data = df, aes(x = valg)) + geom_bar() + xlab("Stemmegivning") + ylab("Antall respondenter") + 
  ggtitle("Respondentenes stemmegivning") + theme_classic()

Legg til theme_linedraw() til stolpediagramet. Trykk på “Run Code” for å se hvordan grafen ser ut.

ggplot(data = df, aes(x = valg)) + geom_bar() + xlab("Stemmegivning") + ylab("Antall respondenter") + ggtitle("Respondentenes stemmegivning")
ggplot(data = df, aes(x = valg)) + geom_bar() + xlab("Stemmegivning") + ylab("Antall respondenter") + 
  ggtitle("Respondentenes stemmegivning") + theme_linedraw()

Sjekk ut de andre temaene som ligger i ggplot2 ved å skrive theme_ og bla deg gjennom nedtrekksmenyen. Trykk på “Run Code” for å se hvordan grafen ser ut.

ggplot(data = df, aes(x = valg)) + geom_bar() + xlab("Stemmegivning") + ylab("Antall respondenter") + 
  ggtitle("Respondentenes stemmegivning")

Arbeidsbok 3: Visualisering av data i R

Eli Sofie Baltzersen, Louisa Boulaziz, Bjørn Høyland, Eric Nilsen, Lise Rødland

01/03/2024