使用cut()函数制作直方图

3
下面的代码绘制了一个直方图,并用阴影区域表示低于平均值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


你需要设置直方图的断点以与你的切割值对齐。不确定是否可以在geom_histogram中完成,但你可以预先计算,然后使用geom_bar。 - Richard Telford
也许可以尝试使用 ggplot(df, aes(x)) + geom_histogram(aes(fill = ndist_breaks), binwidth = 0.005) - Deena
1个回答

2
您可以将数据四舍五入到一位小数。
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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接