如何生成直方图,使其在ggplot2的设置范围之间恰好具有n个仓位?

问题描述

我有一个数据向量,其值可以在1到100之间。当我绘制柱状图的bin大小为10时,我期望10个bin的范围为1-10、11-20等。但是,我最终得到了一个看起来像这样的情节:

enter image description here

如您所见,外部bin的范围超出了我的数据可以接受的值(0和100)的范围。

有没有一种方法可以生成直方图,使其在设定范围内恰好具有n个仓位?

解决方法

您可以使用breaks的{​​{1}}自变量来做所有您想做的事情。如果您愿意,可以设置特定的(和任意的)binwidth。 geom_histogram参数将覆盖breaksbins参数。

binwidth

histogram with arbitrary breaks

如果要在特定范围内(例如0-100)设置n个相等的容器,请使用library(ggplot2) set.seed(123) x <- data.frame(x = sample(1:100,1000,replace = TRUE)) ggplot(x) + geom_histogram(aes(x),breaks = c(0,13,27,45,88,100),color = "black") + scale_x_continuous(breaks = c(0,100)) 。如果您想要的范围大于数据,这将很有用。例如,在我的随机样本中,不存在大于91的值,但是我知道100是一个可能的值,因此我的bin需要扩展到100。

,

您可以将合并比例尺与geom_bar一起使用

ggplot(data.frame(v=sample(1:100,100,TRUE)),aes(x=v)) + 
geom_bar() +
scale_x_binned(n.breaks = 10)

示例https://i.stack.imgur.com/Qvx7r.png