R中类间隔的直方图

时间:2016-09-23 20:30:17

标签: r histogram

我需要绘制直方图,但我的数据是在类间隔中。

以下是我的下限和上级。

xinf=c(0,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5)
xsup=c(10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,30)

频率:

Fo=c(2,5,16,42,69,51,32,23,9,1)

我不知道如何使用这些数据绘制直方图。

3 个答案:

答案 0 :(得分:2)

因为您的数据已经汇总,所以我不会做出正确的"直方图。相反,我们可以用条形图伪造它:

barplot(Fo, width = xsup-xinf)

enter image description here

其中一个细微差别是因为它是条形图,所以条形图之间有空格。这可以通过以下方式删除:

barplot(Fo, width = xsup-xinf, space = 0)

enter image description here

或其他一些接近零值。

其他可选组件:axis(1)barplot(..., main="My Bars")

enter image description here

正如@EdwardCarney开始建议的那样,你可以像这样细化轴:

barplot(Fo, width = xsup-xinf, space = 0, main = "My Bars")
lbls <- sort(union(xinf, xsup))
axis(1, labels = lbls, at = lbls, las = 2)

enter image description here

(他的建议倾向于垃圾箱的中心,在这里我选择了它们的边界。无论哪种方式,你都有选择。请注意,如果你没有设置space=0那么你必须调整位置标签,因为一切都会间隔开。)

答案 1 :(得分:0)

尝试类似

的内容
hist(rep((xinf+xsup)/2, Fo), breaks = union(xinf,xsup), 
     xlab = 'Variable name', main='Histogram')

也许我会通过

更改变量xinfxsup
xinf=c(9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5)
xsup=c(10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5)

答案 2 :(得分:0)

以这种方式:

# data
Fo=c(2,5,16,42,69,51,32,23,9,1)
xinf=c(0,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5)

# breaks for histogram bars
breaks = c(xinf, 30)

# make a histogram with temp data
h = hist(rep(1, length(Fo)), breaks = xx, plot = FALSE)
# Fill the density and counts manually 
h$density = Fo / sum(Fo) 
h$counts = Fo
plot(h, freq = TRUE)

请注意,freq = TRUE部分是获取y轴计数所必需的。它还提供有关这些区域的警告信息。此外,对于密度估计,您可以使用比我使用的更复杂的东西。