首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用g-图绘制密度直方图

用g-图绘制密度直方图
EN

Stack Overflow用户
提问于 2014-06-30 13:16:31
回答 3查看 3.1K关注 0票数 2

如何将这两个向量中的值密度作为两个直方图同时绘制:

代码语言:javascript
复制
interactors1 = c(-6.4, -3.7, -7.7, -4.6, -2.0, -5.5, -3.3, -5.8, -5.0, -4.5,
                  3.2, -0.1, -3.0, -9.2, -3.1, -8.5, -5.4, -9.1, -7.7,  2.2,
                  1.7,  3.4, -8.6, -0.5, -8.1)

代码语言:javascript
复制
noninteractors1 = c(-1, 0.1, 2.7, 0.4, 4.3)

在你问我之前,是的,我查过this post

我想用ggplot而不是hist,因为这些情节看起来好多了。当我将数据融合到一个数据框架中,然后用图表来计算,一切都很好--我得到了这个。

代码语言:javascript
复制
interactors=data.frame(interactors1,noninteractors1)

ggplot(melt(interactors), aes(value, fill = variable)) 
      + geom_histogram(position = "dodge")

然而,我不需要计数,我需要密度。

当我这么做

代码语言:javascript
复制
ggplot(melt(interactors), aes(value, fill = variable)) 
   + geom_histogram(aes(y=..density..),position = "dodge")

我得到一个陈词滥调的结果。这不可能是正确的,因为密度*垃圾箱的总和超过1。我做错了什么?任何帮助都将不胜感激。

P.S.我试着贴出这些情节,但它不让我.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-30 13:51:52

尝尝这个

代码语言:javascript
复制
data=(melt(interactors))
ggplot(data, aes(x=value, fill=variable)) + geom_histogram(aes(y=..density..), binwidth = 1)
票数 1
EN

Stack Overflow用户

发布于 2015-07-06 21:54:44

如果不想设置binwidth = 1,则可以将y值乘以binwidth。例如:

M+geom_histogram(二进制宽度= 0.5,aes(y =(..density.)*0.5))

这使您可以改变绑定宽度和创建频率直方图与适当的比例。

票数 2
EN

Stack Overflow用户

发布于 2014-07-02 14:54:34

感谢雅普和菲利普的答复,非常感谢。我在谷歌上找到了我要找的东西,但也会在这里发布--越多信息越好。

为了使密度之和等于1,必须指定binwidth=1 (谢谢Jaap)。当垃圾箱不等于1时,密度之和不等于1。相反,密度*宾宽的乘积之和等于1。当binwidth=1时,每个矩形的高度(密度)等于变量具有value=x的概率。当二进制宽度!=1时,其概率等于矩形的面积,即矩形的密度*宽度/ bin/的大小。

为大家干杯。:)

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24491023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档