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
<-c("Ap", "FrP", "H", "KrF", "MDG", "Sp","SV", "V")
parti<-c(3.75, 7.5, 7.25, 6, 2.25, 4, 1.5, 6.75)
hoyre<-c(5.33, 4, 3.33, 4, 5.33, 4.67, 5.33, 3.33)
omfordeling<-c(6.67, 5.67, 7.33, 4.33, 3.33, 5.33, 5.67, 5.67)
viktighet<-data.frame(parti, hoyre, omfordeling, viktighet) df
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.