数据:
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)
为什么我会得到这些细条纹,如何删除它们?
答案 0 :(得分:1)
代码有效,但需要较小的数字:
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)
这会返回一个警告,因为它更喜欢返回&#34;密度&#34;而不是&#34;频率&#34;以这种方式手动更改休息后。如果您愿意,可以更改为freq = F.
答案 1 :(得分:1)
总的来说,这是一个坏主意 - 直方图显示数据的连续性,而差距则破坏了这一点。您可以使用较小间隙的先前代码(您的值达到之前的差距):
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()