首页 > 解决方案 > ggplot2中的密度图和直方图

问题描述

我有以下数据框

        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 中的一条细线

在此处输入图像描述

标签: rggplot2density-plot

解决方案


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

在此处输入图像描述


推荐阅读