I am new to R, and currently learning geom_bar on section 3.7 of r4ds.had.co.nz. I run a code like this:
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop..))
group="whatever" is a "dummy" grouping to override the default behavior, which (here) is to group by
cut and in general is to group by the x variable. The default for
geom_bar is to group by the x variable in order to separately count the number of rows in each level of the x variable. For example, here, the default would be for
geom_bar to return the number of rows with
cut equal to "Fair", "Good", etc.
However, if we want proportions, then we need to consider all levels of
cut together. In the second plot, the data are first grouped by
cut, so each level of
cut is considered separately. The proportion of Fair in Fair is 100%, as is the proportion of Good in Good, etc.
group="x", etc.) prevents this, so that the proportions of each level of cut will be relative to all levels of cut.