r - 如何在R中分离直方图的两个最左边的bin

标签 r histogram

假设我需要绘制如下数据集:

set.seed(1)
dataset <- sample(1:7, 1000, replace=T)
hist(dataset)

正如您在下图中所看到的,与其余的 bin 不同,最左边的两个 bin 之间没有任何空间。

enter image description here

我尝试更改 xlim,但没有奏效。基本上,我希望将每个数字(1 到 7)表示为一个 bin,此外,我希望任何两个相邻的 bin 之间都有空间......谢谢!

最佳答案

最好的方法是设置breaks手动参数。使用代码中的数据,

hist(dataset,breaks=rep(1:7,each=2)+c(-.4,.4))

给出以下情节:

enter image description here

第一部分,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/

相关文章:

r - R Shiny中链接的SelectInput控件-可以吗?

r - R中的哪个最大联系方法

r - Strsplit 并计算出现次数

python - Plotly:如何绘制累积的 "steps"直方图?

python - 如何将权重传递给 Seaborn FacetGrid

html - 尝试将 .rmd 文件上传到 wordpress

r - 如何在 knitr 生成的 PDF 中实现黑白友好的语法高亮显示

Python:numpy.histogram 绘图

java - 如何删除直方图中的重复字符[JAVA]

java - 绘制图形直方图