条形图之间的中断,R直方图

x33g5p2x  于 2023-02-10  发布在  其他
关注(0)|答案(3)|浏览(129)

数据:

varx <- c(1.234, 1.32, 1.54, 2.1 , 2.76, 3.2, 4.56, 5.123, 6.1, 6.9)

hist(varx)

给了我

我想做的是创建相同的直方图,但在酒吧之间的空间。
我已经试过这里找到的How to separate the two leftmost bins of a histogram in R
但运气不好。
当我在实际数据上这样做时,我得到:

这是我的实际数据:

a <- c(2.6667
,4.45238
,5.80952
,3.09524
,3.52381
,4.04762
,4.53488
,3.80952
,5.7619
,3.42857
,4.57143
,6.04762
,4.02381
,5.47619
,4.09524
,6.18182
,4.85714
,4.52381
,5.61905
,4.90476
,4.42857
,5.31818
,2.47619
,5
,2.78571
,4.61905
,3.71429
,2.47619
,4.33333
,4.80952
,6.52381
,5.06349
,4.06977
,5.2381
,5.90476
,4.04762
,3.95238
,2.42857
,4.38333
,4.225
,3.96667
,3.875
,3.375
,4.18333
,5.45
,4.45
,3.76667
,4.975
,2.2
,5.53846
,6.1
,5.9
,4.25
,5.7
,3.475
,3.5
,4
,4.38333
,3.81667
,3.9661
,1.2332
,1.2443
,5.4323
,2.324
,1.342
,1.321
,3.81667
,3.9661
,1.2332
,1.2443
,5.4323
,2.324
,1.342
,1.321
,4.32
,6.43
,6.98
,4.321
,3.253
,2.123
,1.234)

为什么我会得到这些细棒,我如何删除它们?

olqngx59

olqngx591#

代码可以工作,但需要更小的数字:

varx <-  c(1.234, 1.32, 1.54, 2.1 , 2.76, 3.2, 4.56, 5.123, 6.1, 6.9)

hist(varx, breaks=rep(1:7,each=2)+c(-.04,.04), freq=T)

这将返回一个警告,因为在手动更改中断后,它更喜欢返回“密度”而不是“频率”。如果愿意,请更改为freq=F。

zbsbpyhn

zbsbpyhn2#

一般来说,这是一个坏主意-直方图显示数据的连续性,而间隙破坏了这一点。您可以使用前面的代码,使用较小的间隙(您的值碰到前面的间隙):

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

但这不是一个通用的解决方案-任何接近截止值0.05的值都将差距区域结束。
我们可以使用ggplot2来绘制因子分解数据的条形图,具体取决于您希望如何舍入值。在本例中,我取了底值(向下舍入到最接近的整数),并舍入到最接近的整数:

library(ggplot2)
varx <- as.data.frame(varx)
varx$floor <- floor(varx$varx)
varx$round <- round(varx$varx)
ggplot(varx, aes(x = as.factor(floor))) + geom_bar()
ggplot(varx, aes(x = as.factor(round))) + geom_bar()

第一节第一节第一节第一节第一次

isr3a4wc

isr3a4wc3#

如果有人想找一个更普通的解决方案,可以将histborder参数设置为与图的背景颜色相同:

par(mfrow=1:2)
# connected bars
hist(y <- rnorm(100))

# seemingly disconnected bars
hist(y, border=par('bg'))

Adding artificial separation between bars

相关问题