如何在ggplot2中控制bin间隔?

时间:2017-01-24 13:18:54

标签: r ggplot2 histogram

我无法正确控制垃圾箱是否从-10到+10或从0到20当我说binwidth = 20我得到前者但我的数据从1开始,我不希望间隔进入底片。

这是我的问题的一个例子:

testData = data.frame(x=c(1,4,6,9,9))

ggplot(data=testData, aes(x=testData$x)) +
  geom_histogram(binwidth=3, aes(col=I("white"))) +
  scale_x_continuous(breaks=c(1,2,3,4,5,6,7,8,9,10))

enter image description here

奇怪的是,如果我使用binwidth = 2,我会以我想要的间隔结束:

ggplot(data=testData, aes(x=testData$x)) +
  geom_histogram(binwidth=2, aes(col=I("white"))) +
  scale_x_continuous(breaks=c(1,2,3,4,5,6,7,8,9,10))

enter image description here

如何让我的箱子从1..20,21..40等处获得更大的数据集?

1 个答案:

答案 0 :(得分:4)

您可以使用center的参数geom_histogram执行此操作,如下所示:

# Make some random test data
testData = data.frame(x=runif(1000,min=1,max=110))
# Construct the plot
ggplot(data=testData, aes(x=testData$x)) +
  geom_histogram(binwidth=20,
                 center = 11,
                 aes(col=I("white"))) +
  scale_x_continuous(breaks=seq(1,max(testData$x) + 20, by = 20))

通过指定binwidth和一个bin的中心,你可以定义bin应该是20宽并且以11为中心。所以第一个bin将是1到21。

我还添加了一个seq()调用来构造x轴刻度,而无需手动输入所有这些。得到的图如下:

enter image description here