这真的不是很好。
brkvec <- c (2.5 , 5.0 , 7.5, 10.0, 12.5, 15.0, 20.0, 25.0, 35.0, 50.0,
Inf )
dat <- c (6.6 ,12.5 ,15.2 ,16.6 ,15.8 ,11.0 ,13.1 ,4.6 ,3.0 ,1.1 ,0.5 )
hist (dat , breaks=brkvec )
## Error in hist.default(dat, breaks = brkvec) :
## some 'x' not counted; maybe 'breaks' do not span range of 'x'
在零处添加一个左断点来处理这个问题:
brkvec <- c(0,brkvec)
hist(dat, brkvec)
但 R 不喜欢这样:
## Error in plot.window(xlim, ylim, "") : need finite 'xlim' values
如果我们想要这个,我们必须通过调整轴标签来破解它:
brkvec2 <- brkvec
brkvec2[brkvec2==Inf] <- max(brkvec2[is.finite(brkvec2)])+1
hist(dat,breaks=brkvec2,col="gray",freq=FALSE,axes=FALSE)
par(las=1,bty="l") ## cosmetic
axis(side=2)
axis(side=1,at=brkvec2,labels=brkvec)
...但最后一个标签甚至不会出现,除非你有一个非常宽的情节,因为 R 抑制重叠标签的方式。您可能更喜欢:
tt <- table(cut(dat,brkvec))
barplot(tt,names=names(tt))
这并不能以任何明智的方式表示类别的宽度,但无论如何都很难表示(50,Inf]
类别的宽度......