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
viktigheter for hvert av partiene (cex =)Legg til en tegnforklaring til grafikken.