ggplot2
, Wickham’s implementation of Wilkinson’s grammar is an easy-to-learn structure for R graphics code.A graph starts with the function ggplot()
, which takes two arguments. The first argument is the source of the data. The second argument maps the data components of interest into components of the graph. That argument is a function called aes()
, which stands for aesthetic mapping. Each argument to aes()
is called an aesthetic.
For example, if you’re creating a histogram of Temp
in the airquality
data frame, you want Type
on the x-axis. The code looks like this:
ggplot(airquality, aes(x=Temp))
All that does is specify the foundation for the graph — the data source and the mapping. If you type that code into the Scripts window and press Ctrl+R, all you would have is a blank grid with Temp
on the x-axis.
Well, what about the histogram? To add it to the foundation, you add another function that tells R to plot the histogram and take care of all the details. The function you add is called a geom
function (geom is short for geometric object).
These geom
functions come in a variety of types: ggplot2
supplies one for almost every graphing need, and provides the flexibility to work with special cases. For a histogram, the geom
function is geom_histogram()
. For a bar plot, it’s geom_bar()
. For a point, it’s geom_point()
.
To add a geom to ggplot, you use a plus sign:
ggplot(airquality, aes(x=Temp)) + geom_histogram()That’s just about it, except for any finishing touches to the graph’s appearance. To modify the appearance of the
geom
, you add arguments to the geom()
function. To modify the background color scheme, you can add one or more theme()
functions. To add labels to the axes and a title to the graph, you add the function labs()
.So, the overall structure for a ggplot
graph is
ggplot(data_source, aes(<em>map data components to graph components</em>)) + geom_xxx(<em>arguments to modify the appearance of the geom</em>) + theme_xxx(<em>arguments to change the overall appearance</em>) + labs(<em>add axis-labels and a title</em>)It’s like building a house: The
ggplot()
function is the foundation, the geom()
function is the house, theme()
is the landscaping, and labs()
puts the address on the door. Additional functions are available for modifying the graph.Still another way to look at ggplot
(and more in line with mainstream thinking) is to imagine a graph as a set of layers. The ggplot()
function provides the first layer, the geom
function the next, and so on.