如何在 R 中的 ggplot2 中绘制“阶梯”或“阶梯”直方图?就像是:
其中每条水平线的宽度表示(x 轴值的)bin 大小,高度对应于落在该 bin 中的数据的分数(与附件图像不同,它是概率密度!)。有没有办法做到这一点geom_histogram
?
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")
可能是其他更漂亮的方法,但这里有一个想法。
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
看起来不错的原因)