2011-04-17 211 views
4

我試圖獲得直方圖圖上的最大頻率。我有一個值列表。然後,我執行以下操作:R直方圖 - 頻率範圍

hist(list, breaks=length(list), freq=TRUE) 

它會自動生成x和y軸的範圍。 y軸是頻率,x軸是列表中的值。

那麼,我怎樣才能找到這個圖表上顯示的最大頻率?

我想在圖的右上角做一個圖例,所以我需要獲取最大頻率值。或者有沒有辦法告訴R將圖例框放在圖的右上角?

+0

是包中的函數'histo',還是你寫,還是你的意思是'hist'? – Greg 2011-04-17 01:46:09

回答

6

直方圖的值可被存儲爲R中的數據幀。服用OP的例子據幀 '列表',您可以:

list_histo <- hist(list, breaks=length(list), freq=TRUE) 

只需鍵入

list_histo 

回R將顯示新的 '元' 數據FRAM包含有關直方圖信息E(這裏顯示的數據是任意的,用於說明目的):

$breaks 
[1] 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68 
[16] 0.70 0.72 0.74 0.76 

$counts 
[1]  1  15 112 878 4734 17995 51094 110146 178855 216454 
[11] 194536 130591 64218 23017 6117 1070 144  23 

$intensities 
[1] 0.00005 0.00075 0.00560 0.04390 0.23670 0.89975 2.55470 5.50730 
[9] 8.94275 10.82270 9.72680 6.52955 3.21090 1.15085 0.30585 0.05350 
[17] 0.00720 0.00115 

$density 
[1] 0.00005 0.00075 0.00560 0.04390 0.23670 0.89975 2.55470 5.50730 
[9] 8.94275 10.82270 9.72680 6.52955 3.21090 1.15085 0.30585 0.05350 
[17] 0.00720 0.00115 

$mids 
[1] 0.41 0.43 0.45 0.47 0.49 0.51 0.53 0.55 0.57 0.59 0.61 0.63 0.65 0.67 0.69 
[16] 0.71 0.73 0.75 

$xname 
[1] "list_histo" 

$equidist 
[1] TRUE 

attr(,"class") 
[1] "histogram" 

調用最大值現在很簡單 - 只需使用

max(list_histo$counts) 

將返回最大值。

2
set.seed(100) 

x = rnorm(100, mean = 5, sd = 2) 

res = hist(x) 

res$mids[which.max(res$counts)] 

[1] 4.5 

根據中斷的寬度條會改變,但mids會給你你正在尋找的酒吧的中點。此發現具有最高計數的條(最大頻率)的中點

2

相反x的,y參數傳說,可以使用legend('topright',...)

0

您還可以使用table(list)

它將返回他們重複的時間價值和tumber的列表:

> list<-c(0.2, 0.6, 0.4, 0.5, 0.1, 0.5, 0.6, 0.6, 0.6, 0.1, 0.1, 0.6, 0.6, 0.6, 0.6) 

> table(list) 
list 
0.1 0.2 0.4 0.5 0.6 
    3 1 1 2 8 

> max(table(list)) 
[1] 8