Use hist() function in R to get percentages as opposed to raw frequencies

前端 未结 2 1324
后悔当初
后悔当初 2020-12-01 08:01

How can one plot the percentages as opposed to raw frequencies using the hist() function in R?

相关标签:
2条回答
  • 2020-12-01 08:15

    Simply using the freq=FALSE argument does not give a histogram with percentages, it normalizes the histogram so the total area equals 1.
    To get a histogram of percentages of some data set, say x, do:

    h = hist(x) # or hist(x,plot=FALSE) to avoid the plot of the histogram
    h$density = h$counts/sum(h$counts)*100
    plot(h,freq=FALSE)
    

    Basically what you are doing is creating a histogram object, changing the density property to be percentages, and then re-plotting.

    0 讨论(0)
  • 2020-12-01 08:16

    If you want explicitly to list every single value of x on the x-axis (i.e. to plot the percentages of a integer variable such as counts), then the following command is a more convenient alternative:

    # Make up some data
    set.seed(1)
    x <- rgeom(100, 0.2)
    
    # One barplot command to get histogram of x
    barplot(height = table(factor(x, levels=min(x):max(x)))/length(x),
            ylab = "proportion",
            xlab = "values",
            main = "histogram of x (proportions)")
    

    # Comparison to hist() function
    h = hist(x, breaks=(min(x)-1):(max(x))+0.5)
    h$density = h$counts/sum(h$counts)*100
    plot(h,freq=FALSE, main = "histogram of x (proportions)")
    

    0 讨论(0)
提交回复
热议问题