Aesthetic mappings describe how variables in the data are mapped to visual properties (aesthetics) of geoms. aes() uses non-standard evaluation to capture the variable names. aes_() and aes_string() require you to explicitly quote the inputs either with "" for aes_string(), or with quote or ~ for aes_(). (aes_q() is an alias to aes_()). This makes aes_() and aes_string() easy to program with.

aes_(x, y, ...)

aes_string(x, y, ...)

aes_q(x, y, ...)

Arguments

x, y, ...

List of name value pairs. Elements must be either quoted calls, strings, one-sided formulas or constants.

Details

aes_string() and aes_() are particularly useful when writing functions that create plots because you can use strings or quoted names/calls to define the aesthetic mappings, rather than having to use substitute() to generate a call to aes().

I recommend using aes_(), because creating the equivalents of aes(colour = "my colour") or aes(x = `X$1`) with aes_string() is quite clunky.

Life cycle

All these functions are soft-deprecated. Please use tidy evaluation idioms instead (see the quasiquotation section in aes() documentation).

See also

Examples

# Three ways of generating the same aesthetics
aes(mpg, wt, col = cyl)
#> Aesthetic mapping: 
#> * `x`      -> `mpg`
#> * `y`      -> `wt`
#> * `colour` -> `cyl`
aes_(quote(mpg), quote(wt), col = quote(cyl))
#> Aesthetic mapping: 
#> * `colour` -> `cyl`
#> * `x`      -> `mpg`
#> * `y`      -> `wt`
aes_(~mpg, ~wt, col = ~cyl)
#> Aesthetic mapping: 
#> * `colour` -> `cyl`
#> * `x`      -> `mpg`
#> * `y`      -> `wt`
aes_string("mpg", "wt", col = "cyl")
#> Aesthetic mapping: 
#> * `colour` -> `cyl`
#> * `x`      -> `mpg`
#> * `y`      -> `wt`

# You can't easily mimic these calls with aes_string
aes(`$100`, colour = "smooth")
#> Aesthetic mapping: 
#> * `x`      -> `$100`
#> * `colour` -> "smooth"
aes_(~ `$100`, colour = "smooth")
#> Aesthetic mapping: 
#> * `colour` -> "smooth"
#> * `x`      -> `$100`
# Ok, you can, but it requires a _lot_ of quotes
aes_string("`$100`", colour = '"smooth"')
#> Aesthetic mapping: 
#> * `colour` -> "smooth"
#> * `x`      -> `$100`

# Convert strings to names with as.name
var <- "cyl"
aes(col = x)
#> Aesthetic mapping: 
#> * `colour` -> `x`
aes_(col = as.name(var))
#> Aesthetic mapping: 
#> * `colour` -> `cyl`