Почему гистограмма из `ggplot ()` такая же, как и для только одной переменной, используемой для `aes`` fill`? - PullRequest
0 голосов
/ 23 февраля 2020

Вопрос касается двух наблюдений, относящихся к следующим 3 фигурам:

(1) Почему гистограммы в (a) и (b) различны, если число бинов одинаково?
(2) Гистограмма в (b) точно такая же, как гистограмма для заливки nonsmo. Если это так, то как сделать гистограмму полных данных, используя ggplot ()?

(a) График с использованием hist(chol$AGE,30).

Histogram using hist()

(b) Гистограмма, построенная с ggplot(data=chol, aes(chol$AGE)) + geom_histogram() и по умолчанию значения, т.е. 30 ячеек.

Histogram with ggplot()

(c) Теперь добавляем заливку относительно переменной SMOKE:

ggplot(data=chol, aes(chol$AGE)) + 
  geom_histogram(aes(fill = chol$SMOKE))

Histogram using ggplot() with fill.

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Вот что я сделал после комментариев @ Dave2e

ggplot(data=chol, aes(AGE, fill = SMOKE)) + 
  geom_histogram(aes(y = ..count..), binwidth = 1, position = "stack")

hist(chol$AGE, breaks = 30, right = FALSE)

enter image description here

enter image description here

Добавление правильного значения для binwidth, реализация по умолчанию position равна stack и использование right в качестве false дает точно такие же гистограммы.

0 голосов
/ 23 февраля 2020

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

Например, сравните:

set.seed(10)
age<-as.integer(rnorm(100, 50, 20))
par(mfrow=c(2, 1))
hist(age, 30, right=TRUE)
hist(age, 30, right=FALSE)

enter image description here Обратите внимание, было создано только около 18 корзин (ширина корзины 5)

С ggplot2 где ячейки смещены к центру диапазона ячейки:

library(ggplot2)
ggplot(data.frame(age), aes(age)) +geom_histogram()

enter image description here

...