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.