r частота рассчитывает наложенную гистограмму и график плотности - PullRequest
1 голос
/ 24 апреля 2020

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

Это мой тестовый набор данных

df <- data.frame(cond = factor( rep(c("A","B"), each=200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

Это построит гистограмму с количеством

ggplot(df, aes(x=rating)) + geom_histogram(binwidth=.5, colour="black", fill="white")

Это построит график плотности, подобный этому

ggplot(df, aes(x=rating)) + geom_density()

Я пытаюсь объединить два,

ggplot(df, aes(x=rating)) + geom_histogram(aes(y=..count..), binwidth=.5, colour="black", fill="white") + geom_density(alpha=.2, fill="#FF6666")

Наложенный график плотности пропал.

Я попробовал этот подход

ggplot(df, aes(x=rating)) + geom_histogram(binwidth=0.5, colour="black", fill="white") + stat_bin(aes(y=..count.., ,binwidth=0.5,label=..count..), geom="text", vjust=-.5) + geom_density(alpha=.2, fill="#FF6666")

Это почти нормально, но не показывает график плотности и перезаписывает мое значение ширины привязки ( Головной уборщик).

Как сохранить гистограммы с подсчетами и показать наложенный график плотности?

1 Ответ

2 голосов
/ 24 апреля 2020

Это решит вашу проблему. Проблема связана с шириной бина. Вам нужно отрегулировать значения y для графика плотности с помощью счетчика и ширины бина, так как плотность всегда = 1.

library(ggplot2)

set.seed(1234)

df <- data.frame(cond = factor( rep(c("A","B"), each=200)), 
                 rating = c(rnorm(200), rnorm(200, mean=.8)))

ggplot(df, aes(x=rating)) + 
  geom_histogram(aes(y = ..count..), binwidth = 0.5, colour = "black", fill="white") +
  stat_bin(aes(y=..count.., binwidth = 0.5,label=..count..), geom="text", vjust=-.5) + 
  geom_density(aes(y = ..count.. * 0.5), alpha=.2, fill="#FF6666")


# This is more elegant: using the built-in computed variables for the geom_ functions


ggplot(df, aes(x = rating)) + 
  geom_histogram(aes(y = ..ncount..), binwidth = 0.5, colour = "black", fill="white") +
  stat_bin(aes(y=..ncount.., binwidth = 0.5,label=..count..), geom="text", vjust=-.5) + 
  geom_density(aes(y = ..scaled..), alpha=.2, fill="#FF6666")

Что приводит к:

enter image description here

...