Search code examples
rhistogramlegend

R histogram - range of frequencies


I'm trying to get the maximum frequency on a histogram graph. I have a list of values. Then, I do the following:

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

and it automatically makes the ranges for the x and y axis. The y axis is the frequencies, and the x axis is the values in the list.

So, how can I find the maximum frequency that will show up on this graph?

I'm trying to make a legend in the top right corner of my graph, so I need to get the maximum frequency value. Or is there a way to tell R to put a legend box in the top right corner of a graph?


Solution

  • The values of a histogram can be stored as a data frame in R. Taking the OP's example dataframe 'list', you could:

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

    simply typing

    list_histo 
    

    back into R will show the new 'meta' data frame containing information about the histogram (data shown here is arbitrary and for illustration purposes):

    $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"
    

    calling the largest value is now straightforward -- simply using

    max(list_histo$counts)
    

    will return the maximum value.