Werken met R bij wiskunde: Grafieken van functies
De grafiek van een functie tekenen
Visualisatie worden in R ondersteund door het ggplot2
pakket en andere pakketten voor speciale doeleinden, zoals phaseR
voor het bestuderen van differentiaalvergelijkingen. Het gaat dan meestal om high-level plotfuncties die volledige diagrammen opleveren en zonodig de uitvoer van een voorafgaande plotopdracht uitwissen. Daarnaast bestaan er low-level plotfuncties die bedoeld zijn om grafische uitvoer aan een eerder gemaakt diagram toe te voegen (denk bijvoorbeeld aan legenda, extra text, of een toevoeging van extra punten of lijnen aan een bestaand diagram)
We beginnen met het tekenen van de grafiek van de functie \[f(t)=t^4e^{-t^2}\] Dit voorbeeld illustreert hoe visualisaties beetje bij beetje opgebouwd kunnen worden en uiteindelijk met high-level en low-level plotfuncties geproduceerd kunnen worden.
Eerst definiëren we de wiskudige functie in R:
> f <- function(t) { t^4 * exp(-t^2) }
We verdelen nu het interval \((0,3)\) in 15 \(t\)-waarden waarvoor we de functiewaarden uitrekenen.
> t <- seq(from=0, to=3, length=15)
> y <- f(t)
Hierna kan de grafiek van \(f\) getekend worden door de berekende puntenparen \(\bigl(t,f(t)\bigr)\) te verbinden met rechte lijnstukjes. We kunnen de tekening decoreren door labels en een legenda toe te voegen. Het resultaat staat onderaan de sessie.
> plot(t, y, type="l", col="blue", lwd=2,
+ main="grafiek van een functie", xlab="t", ylab="y(t)")
> legend(2, 0.5, legend="t^4*exp(-t^2)",
+ col="blue", lty=1, lwd=2, cex=0.8)
Je ziet dat door de weinige gekozen punten, de grafiek van de functie hoekig oogt. Pas wanneer je meer punten neemt om functiewaarden uit te rekenen. We illustreren dit in onderstaande sessie (met onderdrukte uitvoer) waarbij we nu een gladde grafiek van de functie tekenen en maar bovenstaande geselecteerde punten ook tonen. Gebruik het hulpsysteem in R om meer details van de plot
- en lines
-opties te weten te komen of raadpleeg onderstaande overzichtstabellen die de meest gebruikte opties beschrijven.
> f <- function(t) { t^4 * exp(-t**2) }
> t1 <- seq(from=0, to=3, length=15)
> t2 <- seq(from=0, to=3, length=150)
> y1 <- f(t1)
> y2 <- f(t2)
> plot(t1, y1, type="p", col="red", pch=16,
+ main="grafiek van een functie", xlab="t", ylab="y(t)")
> lines(t2, y2, type="l", col="blue", lwd=2)
> legend(2, 0.5, legend=c("t^4*exp(-t^2)", "t^4*exp(-t^2)"),
+ col=c("red", "blue"), pch=c(16,NA_integer_), lwd=c(0,2),
+ lty=c(0,1), cex=0.8)
Overzichten van plotfuncties en hun opties
Gangbare plot-opties
\[\begin{array}{|l|l|} \hline
\textit{plot-optienaam } & \textit{gebruik} \\ \hline
\text{type = "}\textit{letter}\,\text{"} & \text{letteraanduiding voor het type van grafiek}\\
\text{xlim = }c(l,r) & x\text{-domein}\text{ van }l\text{ naar }r\\
\text{ylim = }c(l,h) & y\text{-bereik}\text{ van }l\text{ naar }h\\
\text{xlab = "}\textit{xlabel}\,\text{"} & \text{label op de }x\text{-as}\\
\text{ylab = "}\textit{ylabel}\,\text{"} & \text{label op de }y\text{-as}\\
\text{lty = }n & \text{lijntype: }n=1\text{: normaal; }n=2, 3, \ldots\text{: gebroken}\\
& \text{ook via namen: "blank", "solid", "dashed", "dotted",}\\
& \text{"dotdash", "longdash", "twodash"}\\
\text{lwd = }n & \text{lijndikte gespecificeerd door natuurlijk getal }n\\
\text{pch = }n & \text{puntsymbool: }n=0\text{: open vierkant; }\\
& n=2, 3, \ldots\text{: ander symbolen}\\
\text{cex = }c & \text{schaalfactor }c\text{ voor tekst en symbolen}\\
\text{col = "}\textit{kleur}\text{"} & \text{kleur van grafische elementen}\\
\text{main = "}\textit{titel}\,\text{"} & \text{titel boven de plot}\\
\text{sub = "}\textit{ondertitel}\,\text{"} & \text{titel onder de plot}\\ \hline
\end{array}\]
Enkele high-level plotfuncties
\[\begin{array}{|l|l|} \hline
\textit{plot-instructie } & \textit{gebruik} \\ \hline
\text{plot(x,y)} & \text{scatterplot van punten (x[i], y[i])}\\
\text{plot(x,y, type="l")} & \text{plot van lijnstukken die opeenvolgende punten}\\
& \text{(x[i], y[i]) verbinden}\\
\text{plot(x,y, type="p")} & \text{scatterplot van punten (x[i], y[i])}\\
\text{plot(x,y, type="b")} & \text{scatterplot van punten (x[i], y[i]) verbonden met lijnstukken}\\
\text{plot(x,y, type="s")} & \text{plot een trapfunctie}\\
\text{plot(mat)} & \text{plot de punten (mat[i,1], mat[i,2])}\\
\text{hist(x)} & \text{histogram van vector x}\\
\text{boxplot(x)} & \text{boxplot van vector x}\\ \hline
\end{array}\]
Enkele low-level plotfuncties
\[\begin{array}{|l|l|} \hline
\textit{plot-instructie } & \textit{gebruik} \\ \hline
\text{lines(x,y)} & \text{voeg lijnstukken die opeenvolgende punten (x[i], y[i]) }\\
& \text{verbinden toe aan diagram}\\
\text{point(x,y)} & \text{voeg punten (x[i], y[i]) toe}\\
\text{polygon(x,y)} & \text{voeg veelhoek met hoekpunten (x[i], y[i]) toe}\\
\text{abline(a,b)} & \text{voeg de grafiek van de rechte lijn}y=a+b\cdot x\text{ toe}\\
\text{title("}\textit{titel}\,\text{", "}\textit{ondertitel}\,\text{")} & \text{voeg titels toe}\\
\text{legend()} & \text{voeg legenda toe}\\ \hline
\end{array}\]
Sommige R-functies maken gebruik van de muis.
Het R-commando locator
is handig als je de precieze coördinaten van een aantal punten op het scherm wilt weten. Start met het typen van:z <- locator(n)
Klik vervolgens op n punten in het diagramvenster. De coördinaten van deze punten worden dan opgeslagen in de lijst z.
Door na locator(n=2, type="l")
op twee punten in het grafiekvenster te klikken kan een lijnstuk in de grafiek worden getekend.
Ingebouwde kleuren in R
R heeft 657 ingebouwde kleuren. Je krijgt alle namen te zien als je het commando colors()
in het console intoetst. We geven de volledige tabel met de namen van de kleuren.
white | aliceblue | antiquewhite | antiquewhite1 | antiquewhite2 | antiquewhite3 | antiquewhite4 |
aquamarine | aquamarine1 | aquamarine2 | aquamarine3 | aquamarine4 | azure | azure1 |
azure2 | azure3 | azure4 | beige | bisque | bisque1 | bisque2 |
bisque3 | bisque4 | black | blanchedalmond | blue | blue1 | blue2 |
blue3 | blue4 | blueviolet | brown | brown1 | brown2 | brown3 |
brown4 | burlywood | burlywood1 | burlywood2 | burlywood3 | burlywood4 | cadetblue |
cadetblue1 | cadetblue2 | cadetblue3 | cadetblue4 | chartreuse | chartreuse1 | chartreuse2 |
chartreuse3 | chartreuse4 | chocolate | chocolate1 | chocolate2 | chocolate3 | chocolate4 |
coral | coral1 | coral2 | coral3 | coral4 | cornflowerblue | cornsilk |
cornsilk1 | cornsilk2 | cornsilk3 | cornsilk4 | cyan | cyan1 | cyan2 |
cyan3 | cyan4 | darkblue | darkcyan | darkgoldenrod | darkgoldenrod1 | darkgoldenrod2 |
darkgoldenrod3 | darkgoldenrod4 | darkgray | darkgreen | darkgrey | darkkhaki | darkmagenta |
darkolivegreen | darkolivegreen1 | darkolivegreen2 | darkolivegreen3 | darkolivegreen4 | darkorange | darkorange1 |
darkorange2 | darkorange3 | darkorange4 | darkorchid | darkorchid1 | darkorchid2 | darkorchid3 |
darkorchid4 | darkred | darksalmon | darkseagreen | darkseagreen1 | darkseagreen2 | darkseagreen3 |
darkseagreen4 | darkslateblue | darkslategray | darkslategray1 | darkslategray2 | darkslategray3 | darkslategray4 |
darkslategrey | darkturquoise | darkviolet | deeppink | deeppink1 | deeppink2 | deeppink3 |
deeppink4 | deepskyblue | deepskyblue1 | deepskyblue2 | deepskyblue3 | deepskyblue4 | dimgray |
dimgrey | dodgerblue | dodgerblue1 | dodgerblue2 | dodgerblue3 | dodgerblue4 | firebrick |
firebrick1 | firebrick2 | firebrick3 | firebrick4 | floralwhite | forestgreen | gainsboro |
ghostwhite | gold | gold1 | gold2 | gold3 | gold4 | goldenrod |
goldenrod1 | goldenrod2 | goldenrod3 | goldenrod4 | gray | gray0 | gray1 |
gray2 | gray3 | gray4 | gray5 | gray6 | gray7 | gray8 |
gray9 | gray10 | gray11 | gray12 | gray13 | gray14 | gray15 |
gray16 | gray17 | gray18 | gray19 | gray20 | gray21 | gray22 |
gray23 | gray24 | gray25 | gray26 | gray27 | gray28 | gray29 |
gray30 | gray31 | gray32 | gray33 | gray34 | gray35 | gray36 |
gray37 | gray38 | gray39 | gray40 | gray41 | gray42 | gray43 |
gray44 | gray45 | gray46 | gray47 | gray48 | gray49 | gray50 |
gray51 | gray52 | gray53 | gray54 | gray55 | gray56 | gray57 |
gray58 | gray59 | gray60 | gray61 | gray62 | gray63 | gray64 |
gray65 | gray66 | gray67 | gray68 | gray69 | gray70 | gray71 |
gray72 | gray73 | gray74 | gray75 | gray76 | gray77 | gray78 |
gray79 | gray80 | gray81 | gray82 | gray83 | gray84 | gray85 |
gray86 | gray87 | gray88 | gray89 | gray90 | gray91 | gray92 |
gray93 | gray94 | gray95 | gray96 | gray97 | gray98 | gray99 |
gray100 | green | green1 | green2 | green3 | green4 | greenyellow |
grey | grey0 | grey1 | grey2 | grey3 | grey4 | grey5 |
grey6 | grey7 | grey8 | grey9 | grey10 | grey11 | grey12 |
grey13 | grey14 | grey15 | grey16 | grey17 | grey18 | grey19 |
grey20 | grey21 | grey22 | grey23 | grey24 | grey25 | grey26 |
grey27 | grey28 | grey29 | grey30 | grey31 | grey32 | grey33 |
grey34 | grey35 | grey36 | grey37 | grey38 | grey39 | grey40 |
grey41 | grey42 | grey43 | grey44 | grey45 | grey46 | grey47 |
grey48 | grey49 | grey50 | grey51 | grey52 | grey53 | grey54 |
grey55 | grey56 | grey57 | grey58 | grey59 | grey60 | grey61 |
grey62 | grey63 | grey64 | grey65 | grey66 | grey67 | grey68 |
grey69 | grey70 | grey71 | grey72 | grey73 | grey74 | grey75 |
grey76 | grey77 | grey78 | grey79 | grey80 | grey81 | grey82 |
grey83 | grey84 | grey85 | grey86 | grey87 | grey88 | grey89 |
grey90 | grey91 | grey92 | grey93 | grey94 | grey95 | grey96 |
grey97 | grey98 | grey99 | grey100 | honeydew | honeydew1 | honeydew2 |
honeydew3 | honeydew4 | hotpink | hotpink1 | hotpink2 | hotpink3 | hotpink4 |
indianred | indianred1 | indianred2 | indianred3 | indianred4 | ivory | ivory1 |
ivory2 | ivory3 | ivory4 | khaki | khaki1 | khaki2 | khaki3 |
khaki4 | lavender | lavenderblush | lavenderblush1 | lavenderblush2 | lavenderblush3 | lavenderblush4 |
lawngreen | lemonchiffon | lemonchiffon1 | lemonchiffon2 | lemonchiffon3 | lemonchiffon4 | lightblue |
lightblue1 | lightblue2 | lightblue3 | lightblue4 | lightcoral | lightcyan | lightcyan1 |
lightcyan2 | lightcyan3 | lightcyan4 | lightgoldenrod | lightgoldenrod1 | lightgoldenrod2 | lightgoldenrod3 |
lightgoldenrod4 | lightgoldenrodyellow | lightgray | lightgreen | lightgrey | lightpink | lightpink1 |
lightpink2 | lightpink3 | lightpink4 | lightsalmon | lightsalmon1 | lightsalmon2 | lightsalmon3 |
lightsalmon4 | lightseagreen | lightskyblue | lightskyblue1 | lightskyblue2 | lightskyblue3 | lightskyblue4 |
lightslateblue | lightslategray | lightslategrey | lightsteelblue | lightsteelblue1 | lightsteelblue2 | lightsteelblue3 |
lightsteelblue4 | lightyellow | lightyellow1 | lightyellow2 | lightyellow3 | lightyellow4 | limegreen |
linen | magenta | magenta1 | magenta2 | magenta3 | magenta4 | maroon |
maroon1 | maroon2 | maroon3 | maroon4 | mediumaquamarine | mediumblue | mediumorchid |
mediumorchid1 | mediumorchid2 | mediumorchid3 | mediumorchid4 | mediumpurple | mediumpurple1 | mediumpurple2 |
mediumpurple3 | mediumpurple4 | mediumseagreen | mediumslateblue | mediumspringgreen | mediumturquoise | mediumvioletred |
midnightblue | mintcream | mistyrose | mistyrose1 | mistyrose2 | mistyrose3 | mistyrose4 |
moccasin | navajowhite | navajowhite1 | navajowhite2 | navajowhite3 | navajowhite4 | navy |
navyblue | oldlace | olivedrab | olivedrab1 | olivedrab2 | olivedrab3 | olivedrab4 |
orange | orange1 | orange2 | orange3 | orange4 | orangered | orangered1 |
orangered2 | orangered3 | orangered4 | orchid | orchid1 | orchid2 | orchid3 |
orchid4 | palegoldenrod | palegreen | palegreen1 | palegreen2 | palegreen3 | palegreen4 |
paleturquoise | paleturquoise1 | paleturquoise2 | paleturquoise3 | paleturquoise4 | palevioletred | palevioletred1 |
palevioletred2 | palevioletred3 | palevioletred4 | papayawhip | peachpuff | peachpuff1 | peachpuff2 |
peachpuff3 | peachpuff4 | peru | pink | pink1 | pink2 | pink3 |
pink4 | plum | plum1 | plum2 | plum3 | plum4 | powderblue |
purple | purple1 | purple2 | purple3 | purple4 | red | red1 |
red2 | red3 | red4 | rosybrown | rosybrown1 | rosybrown2 | rosybrown3 |
rosybrown4 | royalblue | royalblue1 | royalblue2 | royalblue3 | royalblue4 | saddlebrown |
salmon | salmon1 | salmon2 | salmon3 | salmon4 | sandybrown | seagreen |
seagreen1 | seagreen2 | seagreen3 | seagreen4 | seashell | seashell1 | seashell2 |
seashell3 | seashell4 | sienna | sienna1 | sienna2 | sienna3 | sienna4 |
skyblue | skyblue1 | skyblue2 | skyblue3 | skyblue4 | slateblue | slateblue1 |
slateblue2 | slateblue3 | slateblue4 | slategray | slategray1 | slategray2 | slategray3 |
slategray4 | slategrey | snow | snow1 | snow2 | snow3 | snow4 |
springgreen | springgreen1 | springgreen2 | springgreen3 | springgreen4 | steelblue | steelblue1 |
steelblue2 | steelblue3 | steelblue4 | tan | tan1 | tan2 | tan3 |
tan4 | thistle | thistle1 | thistle2 | thistle3 | thistle4 | tomato |
tomato1 | tomato2 | tomato3 | tomato4 | turquoise | turquoise1 | turquoise2 |
turquoise3 | turquoise4 | violet | violetred | violetred1 | violetred2 | violetred3 |
violetred4 | wheat | wheat1 | wheat2 | wheat3 | wheat4 | whitesmoke |
yellow | yellow1 | yellow2 | yellow3 | yellow4 | yellowgreen |