The ggplot2 R package is recommended for making plots. It follows the Grammar of Graphics by encouraging thinking of plots as being separate from the data they portray. Fundamentally, a plot consists of layers each of which consists of visual aesthetic elements and a mapping of the data to the aesthetic elements. By defining the semantics of the plot independent of the data, the same plot can be generated for different data.