R ggplot:具有正常密度线的频率直方图系列

时间:2018-08-28 22:15:48

标签: r ggplot2 histogram

我正在使用Rstudio和ggplot2。我想创建一系列频率直方图,其中法线密度曲线重叠。我设法使用tidyverse上建议的binwidth函数为单个变量创建了代码。

这是我为单个变量创建的代码:

ggplot(mtcars, aes(x = mpg)) + 
  geom_histogram(binwidth = function(x)  (max(x)-min(x))/nclass.FD(x)) + 
  stat_function(
    fun = function(x, mean, sd, n, bw){
      dnorm(x = x, mean = mean, sd = sd) * n * bw
    }, 
    args = with(mtcars, c(mean = mean(mpg), sd = sd(mpg), n
                          = length(mpg), bw = (max(mpg)-min(mpg))/nclass.FD(mpg)))
  ) + 
  scale_x_continuous("Miles per gallon") +
  theme_base() +
  ggtitle("Histogram with Normal Curve")

现在,我想使用长格式的数据帧和facet_wrap()函数为数据帧中的所有变量创建相同的图,如上述tidyverse上相同链接的最后一个示例。显然,我的法线曲线/ stat_function()存在问题。

这是我正在使用的代码,随附的图是输出:

ggplot(mtlong, aes(value)) + facet_wrap(~variable, scales = 'free_x') +
  geom_histogram(binwidth = function(x) (max(x)-min(x))/nclass.FD(x)) +
  stat_function(
    fun = function(x, mean, sd, n, bw){
      dnorm(x = x, mean = mean, sd = sd) * n * bw
    }, 
    args = with(mtlong, c(mean = mean(value), sd = sd(value), n
                          = length(value), bw = (max(value)-min(value))/nclass.FD(value)))) +
  theme_base() +
  ggtitle("Histogram with Normal Curve")

enter image description here

关于如何调整每个变量的法线的任何建议?

非常感谢! CP

0 个答案:

没有答案