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
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 medgrDevices::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”
alder
i datasettet df
med mean()
mean(df$alder, na.rm = TRUE)
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)
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")