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

#r #ggplot2 #geom-bar

#r #ggplot2 #геометрическая панель

Вопрос:

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

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

Тогда у меня есть этот график:
нажмите здесь

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

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

График будет неправильным, вот так

Но если я заменю group = 1 на group = 2 или group = «x», график по-прежнему выглядит правильно. Поэтому я не совсем понимаю значение group = 1 здесь и как его использовать.

Ответ №1:

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

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

Комментарии:

1. Означает ли это, что они эквивалентны? geom_bar(mapping = aes(x = cut, y = after_stat(prop), group=1)) и geom_bar(mapping = aes(x = cut, y = after_stat(count/sum(count)))) ?

Ответ №2:

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

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