Special variables in ggplot (..count.., ..density.., etc.)

ggplot2, r

Solution

Expanding @joran's comment, the special variables in ggplot with double periods around them (`..count..`, `..density..`, etc.) are returned by a stat transformation of the original data set. Those particular ones are returned by `stat_bin` which is implicitly called by `geom_histogram` (note in the documentation that the default value of the `stat` argument is `"bin"`). Your second example calls a different stat function which does not create a variable named `..count..`. You can get the same graph with

p + geom_bar(stat="bin")

In newer versions of `ggplot2`, one can also use the `stat` function instead of the enclosing `..`, so `aes(y = ..count..)` becomes `aes(y = stat(count))`.

Problem

Consider the following lines. ``` p <- ggplot(mpg, aes(x=factor(cyl), y=..count..)) p + geom_histogram() p + stat_summary(fun.y=identity, geom='bar') ``` In theory, the last two should produce the same plot. In practice, `stat_summary` fails and complains that the required y aesthetic is missing. Why can't I use `..count..` in `stat_summary`? I can't find anywhere in the docs information about how to use these variables.

Original source