A scatter plot is a graph used to investigate the relationship between two variables in a data set. The x and y axes are used for the values of the two variables and a symbol on the graph represents the combination for each pair of values in the data set. This type of graph is used in many common situations and can convey a lot of useful information.
To illustrate creating a scatter plot we will use a simple data set for the population of the UK between 1992 and 2009. This data is saved in a data frame uk.df using the following command:
uk.df = data.frame(Year = 1992:2009, Population = c(57770, 57933, 58096, 58258, 58418, 58577, 58743, 58925, 59131, 59363, 59618, 59894, 60186, 60489, 60804, 61129, 61461, 61796) ) |
For this example the data is recorded in thousands to make the graph easier to read and there is no benefit or noticeable improvement to be seen by using greater detail.
Base Graphics
Fast Tube by Casper
In the base graphics system the general purpose plot function can be used to create a scatter plot for the UK population data set that we created. The first two arguments to the plot function are the x and y variables respectively. The following code will create a scatter plot, including various labels:
plot(uk.df$Year, uk.df$Population, xlab = "Year", ylab = "Total Population (Thousands)", main = "UK Population (1992-2009)", pch = 16) |
The labels for the x and y axes are specified via the xlab and ylab arguments to the plot function and the main argument specifies the title for the plot.
The graph itself is plain and functional which solid circles indicating the population (in thousands) for each of the years covered by the data.
Lattice Graphics
Fast Tube by Casper
The lattice graphics package provides a function xyplot specifically to create scatter plots and the function is used in a similar way to the base graphics approach. The first argument to the function is a formula describing the relationship to be plotted on the graph, with the y variable preceding the x variable as we are used to when describing mathematical fomula such as y=a+bx. The data frame is specified with the data argument to simplify the expression in the formula. The code used is as follows:
xyplot(Population ~ Year, data = uk.df, xlab = "Year", ylab = "Total Population (Thousands)", main = "UK Population (1992-2009)", scales = list(x = list(at = seq(1992, 2009, 2))) ) |
The axis labels and the overall title for the graph are specified in the same way as the base graphics system. We indulge in some fine tuning of the labels on the x axis via the scales argument – here we indicate that every second year should be included on the label starting in 1992 and running until 2009. The lattice graph is shown here for comparison with the graphs created using the other two packages:
There are very few visual differences between the lattice and base graphics. In lattice graphics an object is created that can be edited to add or remove components and then printed to the screen. This approach is more flexible than the base graphics where the components are painted on top of each other and the use of themes in lattice will make it easier to keep a consistent look to all graphs in a document.
ggplot2
Fast Tube by Casper
In the ggplot2 package the ggplot function is used to create graphs of all types rather than having a separate function defined for each type of graph. The first argument is adata frame with the data to be plotted and the aes argument specifies the aesthetics associated with the graph such as the point symbol, size or colour. In this case the Year variable appears on the x axis and the Population variable on the y axis. The code to create the scatter plot is shown here:
ggplot(uk.df, aes(Year, Population)) + geom_point() + xlab("Year") + ylab("Total Population (Thousands)") + opts(title = "UK Population (1992-2009)") |
The geom_point specifies the type of graph to create (a scatter plot in this situation and this highlights the flexibility of the ggplot2 package as changing the geom will create a new type of graph) and the labels for the graph are created by adding them to the graph with the xlab, ylab and opts functions. The graph is shown below:
This graph is not greatly different to the scatter plot created using the base and lattice packages. The default theme in the ggplot2 package has a gray background with white grid lines that allows easy visual recognition of graphs created using this package.
This blog post is summarised in a pdf leaflet on the Supplementary Material page.