Hadley Wickham describes some of the decisions he made when putting together ggplot2:

In the examples above, we have seen some of the components that make up a plot:

• data and aesthetic mappings,

• geometric objects,

• scales, and

• facet specification.

We have also touched on two other components:

• statistical transformations, and

• the coordinate system.

Together, the data, mappings, statistical transformation, and geometric object form a layer. A plot may have multiple layers, for example, when we overlay a scatterplot with a smoothed line.

This isn’t an article about how to use ggplot2; rather, it’s an article about implementation decisions. To that end, I think it’s useful to see some of the logic behind ggplot2’s decisions.