【发布时间】:2013-07-05 14:21:56
【问题描述】:
如何在 R 中的 ggplot2 中绘制“阶梯”或“阶梯”直方图?类似:
其中每条水平线的宽度表示 bin 大小(x 轴值),高度对应于该 bin 中数据的 分数(与附加图像不同的是概率密度!)。有没有办法用geom_histogram 做到这一点?
【问题讨论】:
如何在 R 中的 ggplot2 中绘制“阶梯”或“阶梯”直方图?类似:
其中每条水平线的宽度表示 bin 大小(x 轴值),高度对应于该 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 看起来不错的原因)
【讨论】:
geom_histogram有两个电话吗?
colour 设置为变量的情况在 df 中对不同的条件进行编码。
geom_density 得到多条彩色线条正确,但形状不正确,所以不确定答案是什么