使用cut()和直方图

时间:2016-08-11 05:58:20

标签: r ggplot2 statistics histogram distribution

下面的代码绘制了阴影区域的直方图,其中2个标准差小于平均值,1个标准差大于平均值等等。

然而,请注意,在直方图的某些区域内,有2种不同的颜色。是否可以创建仅包含1种颜色的垃圾箱?

set.seed(1)
df <- data.frame(x = rnorm(10000, mean = 23, sd = 1))

ndist_probs <- c(0, 0.025, 0.16, 0.5, 0.84, 0.975, 1)

ndist_labels <- c("inf-2SD", "2-1SD", "1SD-mean", "mean-1SD", "1-2SD", "2SD-inf")

ndist_breaks <- quantile(df$x, ndist_probs)

df$ndist_breaks <- cut(df$x, breaks = ndist_breaks, ndist_labels)

library(ggplot2)
ggplot(df, aes(x)) + geom_histogram(aes(fill = ndist_breaks))

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以将数据舍入为一个小数。

df <- data.frame(x = round(rnorm(100000, mean = 23, sd = 1),1))

如果现在将直方图中的binwidth设置为0.1,则会得到所需的结果

ggplot(df, aes(x)) + geom_histogram(aes(fill = ndist_breaks),binwidth = 0.1)

enter image description here