# EXAMPLE CODE FOR DRAWING A LINE PLOT IN R
# 2 February 2008
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
rm(list = ls()) # Clear all variables
graphics.off() # Close graphics windows
# Generate sample time series data
ti = 1:50 # Generate 50 sample time steps
y1 = 8 + rnorm(50) # Generate 50 stochastic data points for time series y1
y2 = seq(10,15,length.out=50) + rnorm(50) # Generate 50 stochastic data points for time series y2
y3 = seq(80,110,length.out=50) + rnorm(50) # Generate 50 stochastic data points for time series y3
# Plot the y1 data
par(oma=c(2,2,2,4)) # Set outer margin areas (only necessary in order to plot extra y-axis)
plot(ti, y1, # Data to plot - x, y
type="b", # Plot lines and points. Use "p" for points only, "l" for lines only
main="Time series plot", # Main title for the plot
xlab="Time", # Label for the x-axis
ylab="Response (y1 & y2)", # Label for the y-axis
font.lab=2, # Font to use for the axis labels: 1=plain text, 2=bold, 3=italic, 4=bold italic
ylim=c(0,20), # Range for the y-axis; "xlim" does same for x-axis
xaxp=c(0,50,5), # X-axis min, max and number of intervals; "yaxp" does same for y-axis
bty="l") # Box around plot to contain only left and lower lines
# Add y2 data to the same plot
points(ti, y2,
type="b", # Plot lines and points
lty=1, # Line type: 0=blank, 1=solid, 2=dashed, 3=dotted, 4=dotdash, 5=longdash, 6=twodash
lwd=1, # Line width
pch=19, # Point type: pch=19 - solid circle, pch=20 - bullet (smaller circle), pch=21 - circle, pch=22 - square, pch=23 - diamond, pch=24 - triangle point-up, pch=25 - triangle point down.
col="red") # Color of the plotted data
# Add y3 data to the same plot, but on a different axis
par(new=T, # The next high-level plotting command (actually plot.new) should not clean the frame before drawing ìas if it was on a new deviceî.
oma=c(2,2,2,4)) # Increase the size of the outer margins to accomodate second y axis
plot(ti, y3,
yaxt="n", # Do not plot the y-axis
ylab="", # Do not plot the y-axis label
xlab="", # Do not plot the x-axis label
type="b", # Plot lines and points
lty=1, # Line type: 0=blank, 1=solid, 2=dashed, 3=dotted, 4=dotdash, 5=longdash, 6=twodash
lwd=1, # Line width
pch=19, # Point type: pch=19 - solid circle, pch=20 - bullet (smaller circle), pch=21 - circle, pch=22 - square, pch=23 - diamond, pch=24 - triangle point-up, pch=25 - triangle point down.
col="blue") # Color of the plotted data
axis(4, # Add a second axis: 1=below, 2=left, 3=above and 4=right
pretty(range(y3),10)) # Intervals for the second y-axis
mtext("Response (y3)", # Add second y-axis label
side=4, # Add to right hand side of plot
line=3, # Add to line 3 from the margin
font=2) # Print label in bold
# Add a legend to the plot
legend("topleft", # x-y coordinates for location of the legend
legend=c("y1", "y2", "y3"), # Legend labels
col=c("black", "red", "blue"), # Color of points or lines
pch=c(21,19,19), # Point type
lty=c(1,1,1), # Line type
lwd=c(1,1,1), # Line width
title="Time series") # Legend title
# For further information and options see help on:
# "plot" - plot function
# "par" - graphical parameters
# "axis" - adding axes to a plot
# "legend" - adding a legend to a graph
# Tufte tip:
# Minimize the non-data clutter in labels, axes etc.