ggplot geom_bar: значение aes (группа = 1)

Я изучаю geom_bar в разделе 3.7 r4ds.had.co.nz. Я запускаю такой код:

library(ggplot2)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

Тогда у меня есть этот сюжет: click here

Дело в том, что если я исключу часть "group = 1":

library(ggplot2)
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop..))

Сюжет будет неверным, like this

Но если я заменю group = 1 на group = 2 или group = "x", график все равно будет выглядеть правильно. Так что я не совсем понимаю значение группы = 1 здесь и как ее использовать.

Ответ 1

group="whatever" - это группировка "dummy", чтобы переопределить поведение по умолчанию, которое (здесь) состоит в группировке с помощью cut и, как правило, группируется по переменной x. По умолчанию для geom_bar следует группировать по переменной x, чтобы отдельно подсчитывать количество строк на каждом уровне переменной x. Например, здесь по умолчанию будет geom_bar возвращать число строк с cut равным "Ярмарка", "Хорошее" и т.д.

Однако, если мы хотим пропорции, нам нужно рассмотреть все уровни cut вместе. Во втором графике данные сначала группируются с помощью cut, поэтому каждый уровень cut рассматривается отдельно. Доля Fair in Fair составляет 100%, равно как доля Good in Good и т.д. group=1 (или group="x" и т.д.) Предотвращает это, так что пропорции каждого уровня разреза будут относиться ко всем уровни разреза.

Ответ 2

Группа поможет графику взглянуть на конкретные строки, которые содержат определенный разрез, и найдена пропорция по отношению ко всей базе данных как пропорция идеального разреза во всем наборе данных.

Если группа не используется, пропорция рассчитывается по отношению к данным, содержащим это поле, и, в конечном счете, в любом случае будет равна 100%. Например, доля идеального разреза в конкретных данных идеального разреза будет равна 1.