График плотности и гистограмма в ggplot2 - PullRequest
3 голосов
/ 01 мая 2020

У меня есть следующий фрейм данных

        x1<-data.frame(n = rnorm(1000000, mean=0, sd=1), nombre= "x1")

        x2<-data.frame(n=rnorm(1500000, mean=3, sd=1), nombre= "x2")

        x<-rbind(x1, x2)

        ggplot(x, aes(n, fill=nombre))+
          geom_histogram(alpha=0.5, binwidth=0.25, position = "identity")+
          geom_density()

Я хотел бы наложить график плотности на гистограмму, но он просто выглядит как тонкая линия в 0

enter image description here

1 Ответ

3 голосов
/ 01 мая 2020

Вам нужно получить geom_histogram и geom_density, чтобы разделить одну и ту же ось. В этом случае я указал оба для построения графика зависимости от плотности, добавив термин aes(y=..density) к geom_histogram. Обратите внимание также на некоторые различные эстетики, чтобы избежать переполнения, и поэтому мы можем видеть оба geoms более четко:

ggplot(x, aes(n, fill=nombre))+
    geom_histogram(aes(y=..density..), color='gray50',
        alpha=0.2, binwidth=0.25, position = "identity")+
    geom_density(alpha=0.2)

enter image description here

Как изначально указано , эстетика fill= относится к обоим, поэтому у вас есть гистограмма и геом плотности, показывающие распределение, сгруппированное по «x1» и «x2». Если вы хотите использовать геометрию плотности для комбинированного набора x1 и x2, просто укажите fill= эстетику c только для геометрии гистограммы:

ggplot(x, aes(n))+
    geom_histogram(aes(y=..density.., fill=nombre),
        color='gray50', alpha=0.2,
        binwidth=0.25, position = "identity")+
    geom_density(alpha=0.2)

enter image description here

...