This section introduces the ggplot2
graphics. You will see how different the syntax is from the base-R graphics. You can think of ggplot2
creating graphs by combining layers with the "+" sign. The default gray background of the ggplot
is not as good for printed publications and can be replaced by adding a theme layer, for example, + theme_minimal()
Key Points
-
Use
ggplot2
to create plots. -
Think about graphics in layers: aesthetics, geometry, statistics, scale transformation, and grouping.
Introduction
Plotting our data is one of the best ways to quickly explore it and the various relationships between variables.
There are three main plotting systems in R, the base plotting system, the lattice package, and the ggplot2 package.
Today we'll be learning about the ggplot2 package, because it is the most effective for creating publication-quality graphics.
ggplot2 is built on the grammar of graphics, the idea that any plot can be expressed from the same set of components: a data set, a coordinate system, and a set of geoms – the visual representation of data points.
The key to understanding ggplot2 is thinking about a figure in layers. This idea may be familiar to you if you have used image editing programs like Photoshop, Illustrator, or Inkscape.
Let's start off with an example:
library("ggplot2") ggplot(data = gapminder, mapping = aes(x = gdpPercap, y = lifeExp)) + geom_point()
So the first thing we do is call the ggplot
function. This function lets R
know that we're creating a new plot, and any of the arguments we give the
ggplot
function are the global options for the plot: they apply to all
layers on the plot.
We've passed in two arguments to ggplot
. First, we tell ggplot
what data we
want to show on our figure, in this example the gapminder data we read in
earlier. For the second argument, we passed in the aes
function, which
tells ggplot
how variables in the data map to aesthetic properties of
the figure, in this case the x and y locations. Here we told ggplot
we
want to plot the "gdpPercap" column of the gapminder data frame on the x-axis, and
the "lifeExp" column on the y-axis. Notice that we didn't need to explicitly
pass aes
these columns (e.g. x = gapminder[, "gdpPercap"]
), this is because
ggplot
is smart enough to know to look in the data for that column!
By itself, the call to ggplot
isn't enough to draw a figure:
ggplot(data = gapminder, mapping = aes(x = gdpPercap, y = lifeExp))
We need to tell ggplot
how we want to visually represent the data, which we
do by adding a new geom layer. In our example, we used geom_point
, which
tells ggplot
we want to visually represent the relationship between x and
y as a scatterplot of points:
ggplot(data = gapminder, mapping = aes(x = gdpPercap, y = lifeExp)) + geom_point()
Source: The Carpentries, https://swcarpentry.github.io/r-novice-gapminder/08-plot-ggplot2/index.html
This work is licensed under a Creative Commons Attribution 4.0 License.