10

如何在 R 中的 ggplot2 中绘制“阶梯”或“阶梯”直方图?就像是:

在此处输入图像描述

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

4

2 回答 2

13

采用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")

在此处输入图像描述

于 2013-07-05T14:46:18.623 回答
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看起来不错的原因)

于 2013-07-05T14:32:54.160 回答