ggplot2 中的密度图和直方图

Adr*_*rbó 6 r ggplot2 density-plot

我有以下数据框

        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()
Run Code Online (Sandbox Code Playgroud)

我想将密度图叠加到直方图上,但它看起来就像 0 中的一条细线

在此输入图像描述

che*_*123 6

您需要获得geom_histogramgeom_density共享同一轴。aes(y=..density)在本例中,我通过将术语添加到来指定两者都根据密度绘制geom_histogram。还要注意一些不同的美学,以避免过度绘制,以便我们能够更清楚地看到这两个几何图形:

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

正如最初指定的,美学fill=适用于两者,因此您可以使用直方图和密度几何图显示根据“x1”和“x2”分组的分布。如果您想要 x1 和 x2 组合的密度几何图形,只需指定fill=直方图几何图形的美观即可:

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述