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, ...)
| x, y, ... | List of name value pairs. Elements must be either quoted calls, strings, one-sided formulas or constants. |
|---|
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.
#> * x -> mpg #> * y -> wt #> * colour -> cylaes_(quote(mpg), quote(wt), col = quote(cyl))#> * colour -> cyl #> * x -> mpg #> * y -> wtaes_(~mpg, ~wt, col = ~cyl)#> * colour -> cyl #> * x -> mpg #> * y -> wtaes_string("mpg", "wt", col = "cyl")#> * colour -> cyl #> * x -> mpg #> * y -> wt#> * x -> `$100` #> * colour -> "smooth"aes_(~ `$100`, colour = "smooth")#> * colour -> "smooth" #> * x -> `$100`# Ok, you can, but it requires a _lot_ of quotes aes_string("`$100`", colour = '"smooth"')#> * colour -> "smooth" #> * x -> `$100`#> * colour -> xaes_(col = as.name(var))#> * colour -> cyl