首页 文章

使用ggplot绘制DENSITY直方图

提问于
浏览
2

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

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)

noninteractors1 = c(-1, 0.1, 2.7, 0.4, 4.3)

在你问之前,是的,我确实退房了this post

我想使用ggplot而不是hist,因为这些图看起来好多了 . 当我将数据融入数据框并且绘图计数一切都很好 - 我得到了这个

interactors=data.frame(interactors1,noninteractors1)

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

但是,我不需要数,我需要密度 .

当我做

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

我得到一个老生常见的结果 . 这是不对的,因为密度*箱的总和超过1.我做错了什么?任何帮助,将不胜感激 .

附:我尝试发布这些情节,但这不是让我...

3 回答

  • 1

    试试这个

    data=(melt(interactors))
    ggplot(data, aes(x=value, fill=variable)) + geom_histogram(aes(y=..density..), binwidth = 1)
    
  • 0

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

    m geom_histogram(binwidth = 0.5,aes(y =(..density ..)* 0.5))

    这允许您改变binwidth并使用适当的比例创建频率直方图 .

  • 2

    感谢Jaap和Philippe的回复,非常感谢 . 我在Google上找到了我想要的东西,但也会在这里发布 - 越多的信息就越好 .

    为了使密度之和等于1,必须指定binwidth = 1(感谢Jaap) . 当箱子不等于1时,密度之和不等于1.相反,密度箱宽度乘积之和等于1.当binwidth = 1时,每个矩形的高度(密度)为等于变量值= x的概率 . 当binwidth!= 1时,其概率等于矩形的面积,即矩形的密度宽度/ bin /的大小 .

    大家欢呼 . :)

相关问题