我正在使用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")
关于如何调整每个变量的法线的任何建议?
非常感谢! CP