Statistical Computing, 36-350
Monday September 19, 2016
Base R has a set of powerful plotting tools. An overview:
plot(): generic plotting functionpoints(): add points to an existing plotlines(), abline(): add lines to an existing plottext(), legend(): add text to an existing plotrect(), polygon(): add shapes to an existing plothist(), image(): histogram and heatmapheat.colors(), topo.colors(), etc: create a color vectordensity(): estimate density, which can be plottedcontour(): draw contours, or add to existing plotTo make a scatter plot of one variable versus another, use plot()
n = 50
set.seed(0)
x = sort(runif(n, min=-2, max=2))
y = x^3 + rnorm(n)
plot(x, y)
The type argument controls the type. Default is p for points; set it to l for lines; b for both; or o for both, overplotted
plot(x, y, type="p")
plot(x, y, type="l")
plot(x, y, type="b")
plot(x, y, type="o")
The main argument controls the title; xlab and ylab are the x and y labels
plot(x, y, main="A noisy cubic") # Note the default x and y labels
plot(x, y, main="A noisy cubic", xlab="My x var", ylab="My y var")
Use the pch argument to control point type
plot(x, y, pch=21) # Empty circles, default
plot(x, y, pch=20) # Filled circles, small
plot(x, y, pch=19) # Filled circles, normal
Use the lty argument to control the line type, and lwd to control the line width
plot(x, y, type="l", lty=1) # Solid line, default
plot(x, y, type="l", lty=2) # Dashed line
plot(x, y, type="l", lty=3) # Dotted line
plot(x, y, type="l", lwd=3) # Solid line, 3 times as thick
Use the col argument to control the color; can be 1 through 8 for basic colors, or a string for any of the 657 available named colors. The function colors() returns a string vector of the available colors
plot(1:9, 1:9, pch=19, col=1) # Black, default
plot(1:9, 1:9, pch=19, col=2) # Red
plot(1:9, 1:9, pch=19, col=1:9) # Color vector
plot(1:9, 1:9, pch=19, col="mediumorchid")
To set up a plotting grid of arbitrary dimension, use the par() function, with the argument mfrow. Note: this will affect all following plots! (Except in separate R Markdown code chunks …)
par(mfrow=c(2,2)) # Grid elements are filled by row
plot(x, y, main="Red cubic", pch=20, col="red")
plot(x, y, main="Blue cubic", pch=20, col="blue")
plot(rev(x), y, main="Flipped green", pch=20, col="green")
plot(rev(x), y, main="Flipped purple", pch=20, col="purple")
Default margins in R are large (and ugly); to change them, use the par() function, with the argument mar. Note: this will affect all following plots! (Except in separate R Markdown code chunks …)
par(mfrow=c(2,2), mar=c(4,4,2,0.5))
plot(x, y, main="Red cubic", pch=20, col="red")
plot(x, y, main="Blue cubic", pch=20, col="blue")
plot(rev(x), y, main="Flipped green", pch=20, col="green")
plot(rev(x), y, main="Flipped purple", pch=20, col="purple")
Use the pdf() function to save a pdf file of your plot, in your R working directory. Use getwd() to get the working directory, and setwd() to set it
getwd() # This is where the pdf will be saved
## [1] "/Users/ryantibs/Dropbox/teaching/f16-350/lectures/plotting"
pdf(file="noisy_cubics.pdf", height=7, width=7) # Height, width are in inches
par(mfrow=c(2,2), mar=c(4,4,2,0.5))
plot(x, y, main="Red cubic", pch=20, col="red")
plot(x, y, main="Blue cubic", pch=20, col="blue")
plot(rev(x), y, main="Flipped green", pch=20, col="green")
plot(rev(x), y, main="Flipped purple", pch=20, col="purple")
graphics.off()
Also, use the jpg() and png() functions to save jpg and png files