R中的相对频率直方图,ggplot

Les*_*y.H 4 plot r frequency ggplot2 lattice

我可以在 R 中绘制相对频率直方图,使用lattice包:

a <- runif(100)
library(lattice)
histogram(a)
Run Code Online (Sandbox Code Playgroud)

我想在ggplot. 我试过

dt <- data.frame(a)
ggplot(dt, aes(x = a)) + 
geom_bar(aes(y = ..prop..))+
 scale_y_continuous(labels=percent)
Run Code Online (Sandbox Code Playgroud)

但它不是那样工作的。我应该在代码中更改什么?在图表之前计算相对频率对我来说不是一个选择。

Axe*_*man 15

您需要直方图,而不是条形图,因此:

ggplot(dt, aes(x = a)) + 
  geom_histogram(aes(y = stat(count) / sum(count)), bins = 8) +
  scale_y_continuous(labels = scales::percent)
Run Code Online (Sandbox Code Playgroud)

lattice

在此处输入图片说明

ggplot2

在此处输入图片说明

您可以看到分箱算法对两个包的工作方式略有不同。

  • 另一种选择是直接使用 geom_histogram(aes(y = stat(密度))) 。https://ggplot2.tidyverse.org/reference/geom_histogram.html#compulated-variables (3认同)