以几种方式在R和ggplot2中显示相对频率或密度直方图

以几种方式在R和ggplot2中显示相对频率或密度直方图,r,ggplot2,R,Ggplot2,我将感谢您在以下方面的帮助(我应该补充一点,我也向ggplot2邮件列表发送了一封电子邮件,但还没有收到任何人的来信) 我们确实有一个数据框架,其中包含一个名为EXP的因子,该因子具有3个级别(DMSO、DMSO1、DMSO2) 我的目标是覆盖因子水平的相对频率直方图还是密度直方图 请让我知道为什么下面的两段R代码显示了非常不同的结果 (根据密度直方图的高度和解释): 对 ggplot(data=pp_ALL) + geom_histogram(mapping=aes(x=VALU

我将感谢您在以下方面的帮助(我应该补充一点,我也向ggplot2邮件列表发送了一封电子邮件,但还没有收到任何人的来信)

我们确实有一个数据框架,其中包含一个名为EXP的因子,该因子具有3个级别(DMSO、DMSO1、DMSO2)

我的目标是覆盖因子水平的相对频率直方图还是密度直方图

请让我知道为什么下面的两段R代码显示了非常不同的结果 (根据密度直方图的高度和解释):

ggplot(data=pp_ALL) +
       geom_histogram(mapping=aes(x=VALUE, y=..density.., colour=EXP),  bins=1000) 
谢谢


bogdan

让我们比较下面的两个例子。使用此数据的默认设置,它们的形状和密度看起来非常相似。根据它们的工作方式,它们确实有细微的区别,密度图使用平滑算法,而直方图使用离散的箱子。这有时会使直方图更容易解释(高度=该箱子中OB的份额,按箱子宽度缩放),而密度图可能更能反映基本的平滑分布。但你会注意到,在这里它们非常相似

diamonds %>%
  mutate(cut = factor(cut)) %>%
  ggplot() + 
  geom_density(aes(x = carat, color = cut)) +
  facet_wrap(~cut)

如果有其他设置,它们看起来可能会非常不同。如果我们将密度图上的带宽设为1/10,或者使用10倍于直方图的箱子,这将使尖峰变得更窄、更高,同时继续将面积积分为1,就像以前一样。我假设你看到的主要情况是,你的直方图比密度图的粒度要高得多(bins=1000),因此任何尖峰都会比密度图中的尖峰更窄、更高

几何密度(aes(x=克拉,颜色=切割),调整=1/10)+

几何图形直方图(aes(x=克拉,y=密度,填充=切割),箱子=300)+

在使用多个因子的情况下,您可能会注意到另一个行为差异,即密度图使用线而不进行叠加,而直方图进行叠加——这会使直方图更高,即使它具有等效的带宽设置,因为它会对每个因子的密度进行叠加

与原件相同,但不带镶嵌面

[尝试
几何密度(aes(x=克拉,颜色=切割),position=“stack”)
使其更像直方图。]


尝试
geom_直方图(aes(x=carat,y=density,fill=cut),position=“dodge”)
使其更像密度图。]

非常感谢Jon!这是一个非常全面的答案!非常感谢!请允许我补充一个问题:您建议用哪种方式在ggplot2中显示相对频率直方图?
ggplot(data=pp_ALL) +
       geom_histogram(mapping=aes(x=VALUE, y=..density.., colour=EXP),  bins=1000) 
diamonds %>%
  mutate(cut = factor(cut)) %>%
  ggplot() + 
  geom_density(aes(x = carat, color = cut)) +
  facet_wrap(~cut)
diamonds %>%
  mutate(cut = factor(cut)) %>%
  ggplot() + 
  geom_histogram(aes(x = carat, y = ..density.., fill = cut)) +
  facet_wrap(~cut)