温馨提示:本文翻译自stackoverflow.com,查看原文请点击:r - Density plot and histogram in ggplot2
density-plot ggplot2 r

r - ggplot2中的密度图和直方图

发布于 2020-08-13 11:48:19

我有以下数据框

        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中

在此处输入图片说明

查看更多

提问者
Adrián Valls Carbó
被浏览
347
chemdork123 2020-05-02 02:55

您需要获取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)

在此处输入图片说明

正如最初指定的那样,美观性同时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)

在此处输入图片说明