R гистограмма - диапазон частот - PullRequest
4 голосов
/ 17 апреля 2011

Я пытаюсь получить максимальную частоту на графике гистограммы. У меня есть список значений. Затем я делаю следующее:

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

и автоматически устанавливает диапазоны для осей x и y. Ось Y - это частоты, а ось X - значения в списке.

Итак, как мне найти максимальную частоту, которая будет отображаться на этом графике?

Я пытаюсь создать легенду в правом верхнем углу графика, поэтому мне нужно получить максимальное значение частоты. Или есть способ сказать R поместить поле легенды в верхнем правом углу графика?

Ответы [ 4 ]

7 голосов
/ 27 апреля 2011

Значения гистограммы могут быть сохранены в виде фрейма данных в R. Взяв примерный фрейм данных списка OP, вы можете:

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

, просто набрав

list_histo 

обратно в R отобразится новый фрейм мета-данных, содержащий информацию о гистограмме (данные, показанные здесь, являются произвольными и в целях иллюстрации):

$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 голосов
/ 17 апреля 2011

Вместо x, y аргументов легенды, вы можете использовать legend('topright',...)

2 голосов
/ 17 апреля 2011
set.seed(100)

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

res = hist(x)

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

[1] 4.5

В зависимости от перерывов ширина стержней будет меняться, но средние значения дадут вам среднюю точку искомого стержня.Находит среднюю точку бара с наибольшим количеством (максимальная частота)

0 голосов
/ 08 апреля 2013

Вы также можете использовать table(list)

Будет возвращен список значений и количество повторений:

> 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
...