= R ggplot2 = '''ggplot2''' is a package for plotting and other data visualization tasks. <> ---- == Installation == `ggplot2` is a part of the [[R/Tidyverse|tidyverse]] collection. ---- == Usage == The core `ggplot` function returns a `ggplot` object. This object does nothing on its own; geometry functions must be applied by 'adding' to the object. As a basic example: {{{ library(tidyverse) ggplot(data = df, mapping = aes(x = foo, y = bar)) + geom_point() + geom_smooth() }}} Geometry function include: * `geom_point()` * `geom_smooth()` * The `method` option determines how the line is calculated. * If unset and if there are fewer than 1,000 cases, [[Statistics/LocallyEstimatedScatterplotSmoothing|LOESS]] is used. If unset and if there are 1,000 cases or more, [[Statistics/GeneralizedAdditiveModel|GAM]] is used. * Other available options include `"lm"` and `"glm"`. * `geom_abline(intercept=A, slope=B)` * `geom_hline(yintercept=Y) * `geom_vline(xintercept=X) * Can pass a vector to add multiple lines. === Aesthetic Mappings === The `aes` option creates an aesthetic `mapping` object. The main point of this function call is to standardize property names. For example, `color`, `colour`, `col`, and `fg` are all coerced to the same property name. The `mapping` option can be specified for either the `ggplot` function for global properties, or for a geometry function for local properties. Consider: {{{ ggplot(data = df, mapping = aes(x = foo, y = bar)) + geom_point(aes(color="blue")) + geom_smooth(aes(color="red")) }}} The `aes` function can also evaluate functions of vectors, like: {{{ aes(x = foo/bar, y = baz^2) }}} Note however that the function eagerly evaluates properties, so tricks have to be used if attempting to abstract the function call, as by a macro. ---- == Theming == '''Themes''' are used to customize the appearance of a graph. They are applied to a `ggplot` object with the addition (`+`) operator. {{{ library(tidyverse) ggplot(data = DATA, mapping = aes(MAPPINGS)) + GEOM_FUNC() + THEME_OBJ }}} === Theme Objects === A set of default themes are built into the `ggplot2` package and accessible from functions: * `theme_grey()` * `theme_gray()` * `theme_bw()` * `theme_linedraw()` * `theme_light()` * `theme_dark()` * `theme_minimal()` * `theme_classic()` * `theme_void()` * `theme_test()` Alternatively, construct a new theme using the `theme` function. {{{ ggplot(data = df, mapping = aes(x = foo, y = bar)) + mytheme }}} A common strategy is to use one of the above default themes as a starting point and then to apply customizations. {{{ ggplot(data = df, mapping = aes(x = foo, y = bar)) + theme_minimal() + mytheme }}} === Options === To set the font for a graph's text: {{{ mytheme <- theme(text = element_text(family = "DejaVu")) }}} To enlarge the title: {{{ mytheme <- theme(plot.title = element_text(size = 20)) }}} Note that targetting `title` instead of `plot.title` would affect the size of ''all'' title-like objects (e.g. axes labels, legend title, and so on). To rotate the x-axis labels 90 degrees: {{{ mytheme <- theme(axis.text.x = element_text(angle = 90, hjust = 0.5, vjust = 0.5)) }}} To color the y-axis labels: {{{ mytheme <- theme(axis.text.y = element_text(colour = "grey20")) }}} To italicize the group titles in a faceted plot: {{{ mytheme <- theme(strip.text = element_text(face = "italic")) }}} ---- == See also == [[https://ggplot2.tidyverse.org/reference/index.html|ggplot2 package reference]] ---- CategoryRicottone