假设我需要绘制如下数据集:
set.seed(1)
dataset <- sample(1:7, 1000, replace=T)
hist(dataset)
正如您在下图中所看到的,与其余的 bin 不同,最左边的两个 bin 之间没有任何空间。
我尝试更改 xlim,但没有奏效。基本上,我希望将每个数字(1 到 7)表示为一个 bin,此外,我希望任何两个相邻的 bin 之间都有空间......谢谢!
最佳答案
最好的方法是设置breaks
手动参数。使用代码中的数据,
hist(dataset,breaks=rep(1:7,each=2)+c(-.4,.4))
给出以下情节:
第一部分,
rep(1:7,each=2)
, 是您希望条形图居中的数字。第二部分控制条的宽度;如果你把它改成 c(-.49,.49)
如果您将其更改为 c(-.3,.3)
,它们几乎会接触到你会得到更窄的酒吧。如果您将其设置为 c(-.5,.5)
然后 R 对你大喊大叫,因为你的 breaks
中不允许有相同的数字。矢量两次。为什么这样做?
如果你拆分break向量,你会得到一个看起来像这样的部分:
> rep(1:7,each=2)
[1] 1 1 2 2 3 3 4 4 5 5 6 6 7 7
和第二部分看起来像这样:
> c(-.4,.4)
[1] -0.4 0.4
当您将它们加在一起时,R 会根据需要循环第二个向量,使其与第一个向量一样长。所以你最终得到
1-0.4 1+0.4 2-0.4 2+0.4 3-0.4 3+0.4 [etc.]
= 0.6 1.4 1.6 2.4 2.6 3.4 [etc.]
因此,您有一个从 0.6 到 1.4 的条--以 1 为中心,宽度为 2*.4--另一个从 1.6 到 2.4 的条以 2 为中心,以 2*.4 为中心,依此类推。如果您有介于两者之间的数据(例如 2.5),那么直方图会看起来有点傻,因为它会创建一个从 2.4 到 2.6 的条形,并且条形宽度不会均匀(因为该条形只有 0.2 宽,而所有其他的都是 0.8)。但是只有整数值这不是问题。
关于r - 如何在R中分离直方图的两个最左边的bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14392647/