【问题标题】:how to plot step histograms in ggplot2 in R?如何在 R 中的 ggplot2 中绘制阶梯直方图?
【发布时间】:2013-07-05 14:21:56
【问题描述】:

如何在 R 中的 ggplot2 中绘制“阶梯”或“阶梯”直方图?类似:

其中每条水平线的宽度表示 bin 大小(x 轴值),高度对应于该 bin 中数据的 分数(与附加图像不同的是概率密度!)。有没有办法用geom_histogram 做到这一点?

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    使用geom_step

    生成一些数据:

    foo <- data.frame(bar=rnorm(100))
    

    带有阶梯几何和y轴计数的直方图:

    ggplot(foo,aes(x=bar)) + stat_bin(geom="step")
    

    在 y 轴上带有阶梯几何和密度的直方图:

    ggplot(foo,aes(x=bar)) + stat_bin(aes(y=..density..),geom="step")
    

    以及“落入该垃圾箱的数据部分”:

    ggplot(foo,aes(x=bar)) + stat_bin(aes(y=..count../sum(..count..)),geom="step")
    

    【讨论】:

      【解决方案2】:

      可能是其他更漂亮的方法,但这里有一个想法。

      foo <- data.frame(bar = rnorm(100)) + theme_bw()
      p <- ggplot(data = foo, aes(x = bar, y = ..count../sum(..count..))) ## or aes(x = bar, y = ..density..) if you want that
      p + geom_histogram(size = 2, colour = "red", fill = "white") + geom_histogram(colour = "transparent", fill = "white")
      

      编辑:

      geom_histogram(size = 2, colour = "red", fill = "white") 创建这个

      我将轮廓的粗细编辑为size = 2,以使最终输出看起来不错。在这个阶段看起来很糟糕。要删除内部线条,请添加 geom_histogram(colour = "transparent", fill = "white"),这将在顶部绘制另一个直方图,覆盖内部线条(以及一些轮廓,这就是我认为 size = 2 看起来不错的原因)

      【讨论】:

      • 你能解释一下为什么geom_histogram有两个电话吗?
      • @user248237dfsf 只需删除第二个,看看会发生什么。这应该是显而易见的。
      • @Roland:我认为尝试获得正确的颜色/阶梯形状是一个技巧......但我不知道如何将其推广到 colour 设置为变量的情况在 df 中对不同的条件进行编码。
      • @user248237dfsf ziggystar 的答案更好,应该更容易使用颜色并在同一图上绘制多个颜色。听起来这是你的最终目标
      • @JakeBurkhead:同意,但当我尝试使用多种颜色的解决方案时,直方图仍然相互遮挡并且看起来不太好。 geom_density 得到多条彩色线条正确,但形状不正确,所以不确定答案是什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2016-11-23
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-27
      相关资源
      最近更新 更多