Sesjon 4: R som tegneprogram (base-R)

R-workshop 30. og 31. august, OsloMet

En av de to største årsakene til at er blitt så populært er muligheten for grafisk framstilling. R er et ypperlig tegneprogram. Det hele skjøt enda mer fart da ggplot2-pakken ble lansert. Den er basert på noe anderledes gramatikk. Idag ser vi på base-R slik at dere blir vant til å tenke i koordinatsystem. I morgen tar vi en titt på ggplot2.

  • hvordan plassere punkter og linjer i et koordinatsystem på enklest mulig vis ved hjelp av plot()-funksjonen.
  • hvordan legge informasjon til et allerede eksisterende koordinatsystem og gi en god tegnforklaring.

Plassere punkter i et koordinatsystem

Samtlige grafikker baserer seg på informasjon som legges inn i et koordinatsystem. Vi har en x-akse (den horisontale linjen) og en y-akse (den vertikale linjen). Når vi tegner, oppgir vi punkter som har en x-verdi og en y-verdi. Det vil si at vi oppgir koordinatene.

For å opprette et tegneark, bruker vi plot()

plot(x=0, y=0)

Vi kan tegne flere punkter samtidig ved å opprette vektorer for x- og y-verdiene.

plot(x=c(0,1), y=c(0,1))

Vi kan trekke linje mellom to punkter.

plot(x=c(0,1), y=c(0,1), type = "l")

… eller tre.

plot(x = c(0,0,1,0), 
       y = c(0,1,1,0),
       type = "l")

Opprette tegneark for så å legge inn informasjon

  plot(x = 0, 
       y = 0,
       type = "n",
       xlim = c(0,2),
       ylim = c(0,2))

 plot(x = 0, 
       y = 0,
       type = "n",
       xlim = c(0,2),
       ylim = c(0,2),
       main = "Tittel",
       xlab = "Navnet pa x-aksen",
       ylab = "Navnet pa y-aksen",
       bty = "n")

Legge til grafikk på eksisterende ark

Vi kan legge til tegnforklaringer, punkter, linjer, tekst, segmenter, piler og polygoner/former.

Legge til punkter, linjer og tekst

Når arket allerede er opprettet ved hjelp av plot() plot()-funksjonen, kan vi legge til elementer.

Punkter

points(x = c(0,1),
         y = c(0,1),
         pch = 16)
lines(x = c(0,1,2),
      y = c(0,1,1),
      lty = 2)
text(x = c(0,1,2),
       y = c(0,1,1),
       labels = c("Lav", "Hoy", "Ogsa hoy"))
Funksjon Argument R-funk. R-arg.
Plot plot()
(basisfunksjon for grafikk)
x-koordinatene x=
y-koordinatene y=
type grafikk: Linje (‘l’), punkter(‘p’), type=
begge deler (‘b’), histogram (‘h’),
ingen liner (‘n’)
farge (kan oppgis i tall eller ‘ord’) col=
start- og sluttpunkt pa x-aksen (oppgis som vektor) xlim=
start- og sluttpunkt pa y-aksen (oppgis som vektor) ylim=
navn pa x-aksen (oppgis i ‘hermetegn’) xlab=
navn pa y-aksen (oppgis i ‘hermetegn’) ylab=
overskrift (oppgis i ‘hermetegn’) main=
bokstype rundt plottet: ingen boks (‘n’) bty=
Legg linje til i lines()
eksisterende grafikk
x-koordinatene x=
y-koordinatene y=
type line (oppgis i tall) lty=
tykkelse pa linje (oppgis i tall) lwd=
Legg punkter til i points()
eksisterende grafikk
x-koordinatene x=
y-koordinatene y=
type punkt (oppgis i tall) pch=
storrelse pa punkter (oppgis i tall) cex=
Legg punkter til i text()
eksisterende grafikk
i form av tekst
x-koordinatene x=
y-koordinatene y=
tekst (oppgis i hermetegn) labels=
storrelse pa tekst (oppgis i tall) cex=
Legg piler til i arrows()
eksisterende grafikk
x-koordinaten for starten pa pilen x0=
y-koordinaten for starten pa pilen y0=
x-koordinaten for pilspissen x1=
y-koordinaten for pilspissen y1=
Tegnforklaring legend()
(boks plassert i grafikk)
x-koordinat for plassering x=
y-koordinat for plassering y=
forklarende tekst (vektor) legend=
linjetyper (lik rekkefolge som foregaende) lty=
punkttyper (lik rekkefolge som foregaende) pch=
farger (lik rekkefolge som foregaende) col=

Farger og størrelser

  plot(x=0, y=0, cex=4)

  plot(x=0, y=0, col="blue")

Fargene kan også være en vektor

plot(x=c(0,1,2,3), 
       y=c(0,0,0,0), 
       col=c("blue", "red"))

Tegnforklaringer

legend(x="topright",
         legend = c("Blå", "Rød"),
         pch = 1,
         col = c("blue", "red"))

Din tur!

Opprett data

parti<-c("Ap", "FrP", "H", "KrF", "MDG", "Sp","SV", "V")
hoyre<-c(3.75, 7.5, 7.25, 6, 2.25, 4, 1.5, 6.75)
omfordeling<-c(5.33, 4, 3.33, 4, 5.33, 4.67, 5.33, 3.33)
viktighet<-c(6.67, 5.67, 7.33, 4.33, 3.33, 5.33, 5.67, 5.67)
df<-data.frame(parti, hoyre, omfordeling, viktighet)
  • Tegn et spredningsdiagram for partiers høyreorientering (hoyre) omfordeling).

  • kan du tilrettelegge diagrammet med tittel, aksenavn osv.?

  • kan du lage det samme diagrammet med partinavn og farger?

  • Bestem størrelsen på partinavnene etter hvor viktig den økonomiske høyre-venstreaksen viktighet er for hvert av partiene (cex =)

  • Legg til en tegnforklaring til grafikken.