问题描述
我有一个数据向量,其值可以在1到100之间。当我绘制柱状图的bin大小为10时,我期望10个bin的范围为1-10、11-20等。但是,我最终得到了一个看起来像这样的情节:
如您所见,外部bin的范围超出了我的数据可以接受的值(0和100)的范围。
有没有一种方法可以生成直方图,使其在设定范围内恰好具有n个仓位?
解决方法
您可以使用breaks
的{{1}}自变量来做所有您想做的事情。如果您愿意,可以设置特定的(和任意的)binwidth。 geom_histogram
参数将覆盖breaks
和bins
参数。
binwidth
如果要在特定范围内(例如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)