Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

r

histogram

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

like image 394
newdev14 Avatar asked Sep 06 '11 18:09

newdev14


2 Answers

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.

like image 153
Brian Avatar answered Sep 21 '22 23:09

Brian


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

enter image description here

# 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)") 

enter image description here

like image 23
majom Avatar answered Sep 25 '22 23:09

majom