2013-06-05 48 views
12

我在R中製作直方圖時遇到了麻煩。問題是我告訴它做5個bin,但是它使得4和我告訴make 5,並且它使得8個。R中直方圖中bin的確切數

data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82); 

hist(data, nclass = 5,freq=FALSE,col="orange",main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i") 

有關如何解決它的任何想法?

+2

「R」函數的幫助文件非常明確,我會授予需要仔細閱讀它們的幫助文件。始終是一個好主意,從那裏開始。 –

回答

16

使用中斷的說法:

hist(data, breaks=seq(0,80,l=6), 
     freq=FALSE,col="orange",main="Histogram", 
     xlab="x",ylab="f(x)",yaxs="i",xaxs="i") 

enter image description here

+0

謝謝!這對比較頻率分佈或PDF也很有用。 –

8

指定爲參數爲nclass整數被用作一個建議:

的數目是一個建議僅

一種替代的解決方案是cut你的載體分成組的指定數量的繪製結果:

plot(cut(data, breaks = 4)) 

enter image description here

2

如果你不反對使用除了基礎圖形以外的東西,總是有做事情的GGPLOT2方式:

庫(ggplot2)

data < - data.frame(x = data)

ggplot(data, aes(x=x))+ 
     geom_histogram(binwidth=18,color="black", fill="grey")+ 
     scale_x_continuous(breaks=c(0,20,40,60,80) 

GGPLOT2具有豐富的文檔:docs.ggplot2.org/current/

對於直方圖的具體例子:http://docs.ggplot2.org/current/geom_histogram.html

7

大廈羅布海德門的答案:

也許更通用的解決方案是考慮數據的最小值和最大值以及中斷次數= number_of_bins + 1。

hist(data,breaks=seq(min(data),max(data),l=number_of_bins+1), 
    freq=FALSE,col="orange", 
    main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i") 
1

我想是相當精確的關於我的數據點:

hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1)))) 

這應該自動很少手動輸入的過程。