如何在R中的ggplot2中绘制步骤直方图?

时间:2013-07-05 14:21:56

标签: r plot ggplot2

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

enter image description here

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

执行此操作

2 个答案:

答案 0 :(得分:10)

生成一些数据:

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

enter image description here

答案 1 :(得分: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")

enter image description here

修改

geom_histogram(size = 2, colour = "red", fill = "white")创造了这个 enter image description here

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