Doing mathematics with R: Graphs of functions
Plotting the graph of a function
Visualisations are supported in R by the ggplot2
pakckages and other special purpose pacjages, srch phaseR
for exploration of differential equations. In most case this concerns high-level plot functions that deliver complete diagram and if necessary wipe out the output of a previous plotting instruction. In addition, there are low-level plotting functions designed to add graphical output to a previously created chart (think, for example, of a legend, additional text, or the addition of extra points or lines to an existing chart).
We with start with plotting the graph of the function \[f(t)=t^4e^{-t^2}\] This example illustrates how visualizations can be gradually built up and ultimately produced using high-level and low-level plotting functions.
First we define the mathematical function in R:
> f <- function(t) { t^4 * exp(-t^2) }
Next we divide the interval \((0,3)\) in 15 \(t\)-values for which we compute the function values.
> t <- seq(from=0, to=3, length=15)
> y <- f(t)
Afterwards, the graph of \(f\) can be plotted by connecting the computed pairs of points \(\bigl(t,f(t)\bigr)\) with straight line segments. We can decorate the plot by adding labels and a legend. The result is shown at the bottom of the session.
> plot(t, y, type="l", col="blue", lwd=2,
+ main="graph of a function", xlab="t", ylab="y(t)")
> legend(2, 0.5, legend="t^4*exp(-t^2)",
+ col="blue", lty=1, lwd=2, cex=0.8)
You can see that due to the few selected points, the graph of the function is not smooth. It's only when you take more points to compute function values that it becomes smoother. We illustrate this in the session below (with suppressed output), where we now draw a smooth graph of the function and also display the previously selected points. Use the help system in R to learn more about the plot and lines options, or consult to the summary tables below that describe the most commonly used options.
> 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="graph of a function", 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)
Overview of plot functions and their options
Commonly used plot options
\[\begin{array}{|l|l|} \hline
\textit{plot-option name } & \textit{use} \\ \hline
\text{type = "}\textit{letter}\,\text{"} & \text{letter indicating thr type of graph}\\
\text{xlim = }c(l,r) & x\text{-domain}\text{ from }l\text{ through }r\\
\text{ylim = }c(l,h) & y\text{-range}\text{ from }l\text{ through }h\\
\text{xlab = "}\textit{xlabel}\,\text{"} & \text{label at the }x\text{-axis}\\
\text{ylab = "}\textit{ylabel}\,\text{"} & \text{label at the }y\text{-axis}\\
\text{lty = }n & \text{linetype: }n=1\text{: normal; }n=2, 3, \ldots\text{: disjoint pieces}\\
& \text{also via names: "blank", "solid", "dashed", "dotted",}\\
& \text{"dotdash", "longdash", "twodash"}\\
\text{lwd = }n & \text{line width specified by natural number }n\\
\text{pch = }n & \text{point symbol: }n=0\text{: open square; }\\
& n=2, 3, \ldots\text{: other symbols}\\
\text{cex = }c & \text{scale actor }c\text{ for text and symbols}\\
\text{col = "}\textit{colour}\text{"} & \text{colour of graphic elements}\\
\text{main = "}\textit{title}\,\text{"} & \text{title above the plot}\\
\text{sub = "}\textit{subtitle}\,\text{"} & \text{title below the plot}\\ \hline
\end{array}\]
Some high-level plot functions
\[\begin{array}{|l|l|} \hline
\textit{instruction } & \textit{use} \\ \hline
\text{plot(x,y)} & \text{scatter plot of point (x[i], y[i])}\\
\text{plot(x,y, type="l")} & \text{plot of line segment that connect the subsequential points}\\
& \text{(x[i], y[i])}\\
\text{plot(x,y, type="p")} & \text{scatter plot of points (x[i], y[i])}\\
\text{plot(x,y, type="b")} & \text{scatter plot of points (x[i], y[i]) connected by line segments}\\
\text{plot(x,y, type="s")} & \text{plot a of staircase function}\\
\text{plot(mat)} & \text{plot the points (mat[i,1], mat[i,2])}\\
\text{hist(x)} & \text{histogram of the vector x}\\
\text{boxplot(x)} & \text{boxplot of the vector x}\\ \hline
\end{array}\]
Some low-level plot functions
\[\begin{array}{|l|l|} \hline
\textit{instruction } & \textit{use} \\ \hline
\text{lines(x,y)} & \text{add line segments that connect points (x[i], y[i]) }\\
& \text{to an existing diagram}\\
\text{point(x,y)} & \text{add points (x[i], y[i]) }\\
\text{polygon(x,y)} & \text{add the polygon with vertices (x[i], y[i]) toe}\\
\text{abline(a,b)} & \text{add the graph of a straight line }y=a+b\cdot x\\
\text{title("}\textit{title}\,\text{", "}\textit{subtitle}\,\text{")} & \text{add a title}\\
\text{legend()} & \text{add a legend}\\ \hline
\end{array}\]
Some R functions use mouse action.
The R function locator
is useful when you want to know the precise coordinates of certain points on the screen. Start with typing:z <- locator(n)
Next, click on n point in the plot window. The coordinates of these points are then stored in the list z.
Clicking on two points in the plot window after the instruction locator(n=2, type="l")
a line segment can be added to the graph.
Built-in colours in R
R has 657 built-in colours. You can see all the names by typing the instruction colors()
in the console. We provide the complete table with the names of the colours..
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 |