R visualisering introduktion

Charlie Lindgren, Doktorand i Mikrodata Analys
5 april 2017

Innehållsförteckning

Enklare plots

I följande slides kommer jag att visa er lite enklare plots, eller grafer, som man kan skapa i R.

Tillbaka till innehållsförteckningen

del 1del 2del 3del 4del 5del 6del 7del 8

Enklare plots (del 1)

Säg att vi har en vektor

x <- c(1,2,3,1,7,5)

och vill plotta denna (lite svenska och engelska blandat här), alltså skapa en graf över den. Då använder vi helt enkelt funktionen plot() i R.

?plot

tillbaka

Enklare plots (del 2)

plot(x)

plot of chunk unnamed-chunk-3

tillbaka

Enklare plots (del 3)

Det här är okej för en snabb titt på vår vektor, men vi vill gärna snygga till det lite. Vi lägger till etiketter på axlarna och plottar en linje istället. Vi lägger också till en titel på plotten.

plot(x, xlab = "x-värde", ylab = "y-värde", main = "En enkel plot", type = "l") # "l" står för line.

plot of chunk unnamed-chunk-4

tillbaka

Enklare plots (del 4)

Läser ni i hjälpdokumentationen så finns fler sätt att visa samma data på olika sätt.

# "p" for points,  (default)
# "l" for lines,
# "b" for both,
# "c" for the lines part alone of "b",
# "o" for both ‘overplotted’,
# "h" for ‘histogram’ like (or ‘high-density’) vertical lines,
# "s" for stair steps,
# "S" for other steps, see ‘Details’ below,
# "n" for no plotting.

tillbaka

Enklare plots (del 5)

plot(x, xlab = "x-värde", ylab = "y-värde", main = "En enkel histogram plot", type = "h") 

plot of chunk unnamed-chunk-6

plot(x, xlab = "x-värde", ylab = "y-värde", main = "En enkel step plot", type = "s") 

plot of chunk unnamed-chunk-7

tillbaka

Enklare plots (del 6)

Jag vill att ni öppnar text filen dollar.txt som jag har gjort tillgänglig på fronter. Använd koden nedan men modifiera sökvägen. Det är irriterande men Windows kör med bakvänt backslash tecken så man måste vända detta manuellt för att det skall funka i R.

d = read.table("C:/Users/clg/Dropbox/~ Teaching ~/VT 17 MA1041 Mathematics for Civil Planning and Construction/R introduktion/Teaching-R-Swedish/R plots/dollar.txt", col.names=c("month","year", "index"))

Enklare plots (del 7)

Med fler val plot argument kan man få till snyggare grafer med mer meningsfulla åskådligöringar. Exemplet nedan gäller för dollarns index sedan 1973, kopiera denna till ett script. (källa)

plot(d$index, axes=F, ylim=c(0,150), typ='l', ann=F)
par(tcl= -0.2)
axis(1, at=seq(1, 445, by=12), labels=F, lwd=1, lwd.ticks=1)
par(tcl= -0.5)
axis(1, at=seq(1 + 12*2, 450, by=60), labels=seq(1975,2010,5), lwd=0, lwd.ticks=2)
par(tcl= -0.5)
axis(2)
abline(v=(12*(seq(2,32,by=5)))+1, col="lightgray", lty="dotted")
abline(h=(seq(0,150,25)), col="lightgray", lty="dotted")
title(main="Nominal Major Currencies Dollar Index", sub="Mar 1973 = 100.00", ylab="US$ vs major currencies")
linear.model = lm(d$index ~ row(d)[,1])
abline(linear.model, col="blue")

Enklare plots (del 8)

plot of chunk unnamed-chunk-10

Plotta kurvor

I följande slides kommer jag att visa er hur kurvor kan plottas i R utifrån matematiska formler.

Tillbaka till innehållsförteckningen

del 1del 2del 3del 4del 5del 6del 7del 8del 9del 10

Plotta kurvor (del 1)

En behändig och i många underskattad funktion i R är curve().

?curve

Funktionen låter er plotta matematiska formler, det vill säga plotta funktioner.

Kurvfunktionen tar, som första argument, ett uttryck i R. Uttrycket bör vara en matematisk funktion i form av x.

tillbaka

Plotta kurvor (del 2)

Ett enkelt exempel är y = x (notera dubbla paranteser).

curve((x))

plot of chunk unnamed-chunk-12

tillbaka

Plotta kurvor (del 3)

Vi kan också lägga till en kurva ovanpå den gamla med “add = TRUE”. semikolon tecknet betyder ny rad för koden.

curve((x)); curve(x^2, add = TRUE)

plot of chunk unnamed-chunk-13

tillbaka

Plotta kurvor (del 4)

Vi kan även lägga till punkter och text precis som i vanliga plot.

curve(x^2, type="p", ylab = "y-axeln", xlab = "x-axeln", main = "Plot med punkter")

plot of chunk unnamed-chunk-15

tillbaka

Plotta kurvor (del 5)

Vi kan också plotta mellan två eget angivna värden med from och to, och dessutom bestämma hur stor del av plotten vi skall titta på oberoende av dessa värden.

curve(x^3, from = -2, to = 2, xlim = c(-5, 5), ylim = c(-9, 9))

tillbaka

Plotta kurvor (del 6)

curve(x^3, xlim = c(-5, 5), ylim = c(-9, 9))

plot of chunk unnamed-chunk-17

curve(x^3, from = -2, to = 2, xlim = c(-5, 5), ylim = c(-9, 9))

plot of chunk unnamed-chunk-18

tillbaka

Plotta kurvor (del 7)

Vill vi även lägga till linjer för var x-axeln skär y-axeln. Detta kan vi enkelt göra med

abline(v=0, h=0)

efter vi har skapat vår plot. Vi vill kanske även få denna linje lite mer distinkt från själva plotten, då ändrar vi linjetyp.

abline(v=0, h=0, lty = "dashed")

tillbaka

Plotta kurvor (del 8)

curve(x^3, xlim = c(-5, 5), ylim = c(-9, 9)); abline(v=0, h=0)

plot of chunk unnamed-chunk-21

curve(x^3, from = -2, to = 2, xlim = c(-5, 5), ylim = c(-9, 9)); abline(v=0, h=0, lty = "dashed")

plot of chunk unnamed-chunk-22

tillbaka

Plotta kurvor (del 9)

Slutligen kan vi “go crazy” och trycka in flera kurvor på en gång ☺. Märk här att argumenten lwd för linjebredd och col för kulör har lagts till.

curve((x), from = -2, to = 2, lwd = 2)
curve(0 * x + 1.5, add = TRUE, col = "green")
curve(x^3, add = TRUE, col = "red")
curve(-3 * (x + 2), add = TRUE, col = "orange")

abline(v=0, h=0, lty = "dashed")

Plotta kurvor (del 10)

På skoj kan ni testa köra följande kod och se vad som händer.

install.packages("plotly")
library(plotly)
plot_ly(z=volcano, type="surface") 

tillbaka

ggplot2

I följande slides kommer jag att kort introducera er till ggplot2, ett populärt grafikhanteringspaket i R.

Tillbaka till innehållsförteckningen

del 1del 2del 3del 4del 5del 6del 7

ggplot2 (del 1)

ggplot2 är ett populärt paket i R för att plotta generellt och kan ge många imponerande grafer. I vårt fall är vi främst intresserad av funktioner men ni kommer kunna finna stor nytta i att använda detta paket.

install.packages("ggplot2")
library(ggplot2)
?ggplot2

tillbaka

ggplot2 (del 2)

ggplot2 paketet har en extra funktion för att ange funktioner. Så koden kommer skilja sig från plot() men man kan åstakomma mer med detta plot verktyg.

?stat_function

I ggplot2 paketet lägger man till sådana här funktioner genom att addera dom med plustecken till sin orginalgraf.

tillbaka

ggplot2 (del 3)

Vi anger ett tomt dataset att plotta ovanpå. Jag kallar ggplot2 igen från library för presentationen kräver detta, men det behöver inte ni göra i er kod.

library(ggplot2)
p <- ggplot(data = data.frame(x = 0), mapping = aes(x = x))

tillbaka

ggplot2 (del 4)

Nu lägger vi till den funktion vi vill titta på.

library(ggplot2)
vår_funktion <- function(x) x^3
p + stat_function(fun = vår_funktion)

grafen anpassar axlarna till lämplig höjd och bredd för funktionen.

ggplot2 (del 5)

Vi kan även bestämma vilken spann som funktion ska visas på.

library(ggplot2)
vår_funktion <- function(x) x^3
p + stat_function(fun = vår_funktion) + xlim(-1,2) + ylim(-1,3)

axlarna har anpassats till våra nya mått.

ggplot2 (del 6)

Vi lägger till en till funktion.

library(ggplot2)
vår_funktion <- function(x) x^3
en_till_funktion <- function(x) x
p + stat_function(fun = vår_funktion) + stat_function(fun = en_till_funktion)  + xlim(-1,2) + ylim(-1,3)

ggplot2 (del 7)

Avslutningsvis så kan ni spara er plot som en variabel och använda funktionen ggplotly (notera y på slutet!) för interaktivitet med funktionen.

library(ggplot2)
library(plotly)
vår_funktion <- function(x) x^3
en_till_funktion <- function(x) x
vår_plot <- p + stat_function(fun = vår_funktion) + stat_function(fun = en_till_funktion)  + xlim(-1,2) + ylim(-1,3)
ggplotly(vår_plot)

Vi kommer att gå igenom fler funktioner, grafiska tricks och annat i fortsättningen av kursen.