题 使用R中的hist()函数获得百分比而不是原始频率


如何使用R中的hist()函数绘制百分比而不是原始频率?


24
2017-09-06 18:53


起源


你能帮忙改变正确答案吗? stackoverflow.com/a/9122859/892313 而不是BrianDiggs的回答?这将有助于很多人=) - alvas
谢谢@ newdev14! - alvas


答案:


只需使用 freq=FALSE 参数不给出百分比的直方图,它将直方图标准化,因此总面积等于1。
要获得某些数据集的百分比直方图,比如x,请执行以下操作:

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)

基本上你正在做的是创建一个直方图对象,将密度属性更改为百分比,然后重新绘图。


73
2018-02-03 02:14



非常好。我建议更改y轴标签:plot(h,freq = F,ylab ='Percentage') - PeterVermont


如果要显式列出每个值 x 在x轴上(即绘制整数变量的百分比,如计数),以下命令是一个更方便的选择:

# 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


3
2017-08-05 14:32