ggplot:使用 stat_function 向现有直方图和分布层添加正态分布曲线
ggplot: adding normal distribution curve using stat_function to existing histogram and distribution layers
我需要完成的任务:
1.绘制x=data/y=密度直方图——完成
2. 绘制给定数据集的分布曲线 - 完成
3. 为该数据集绘制完美的正态分布曲线(红线)- 问题 我假设问题出在第二个stat_function.
代码 运行-able w/o 任何准备工作:
data <- data.frame(c(runif(30,1,50)),c(runif(30,50,1)))
g.data <- data[,1]
graph <- ggplot(data, aes(g.data))
graph <- graph +
geom_histogram(aes(y = ..density..), binwidth = 2, fill = 'pink') +
labs(x = 'Data', y ='Density') +
stat_function(fun = dnorm, args = list(mean = mean(g.data, na.rm = T),
sd = sd(g.data, na.rm =T)), colour ='black', size =1) +
theme(legend.position = 'none') +
stat_function(fun = dnorm, colour = "red", args = list(mean = mean(g.data)))
graph
这是我得到的
这里是我大概需要的,完美的规范。分布
正态分布有两个参数:均值和标准差。这里你只提供 dnorm 的平均值,所以它假设 sd = 1
.
您提供的代码的更正版本是:
data <- data.frame(c(runif(30,1,50)))
ggplot(data, aes(data[,1])) +
geom_histogram(aes(y = ..density..), binwidth = 2, fill = 'pink') +
labs(x = 'Data', y = 'Density') +
stat_function(fun = dnorm,
args = list(mean = mean(data[,1], na.rm = TRUE),
sd = sd(data[,1], na.rm = TRUE)),
colour = 'black', size = 1)
我需要完成的任务: 1.绘制x=data/y=密度直方图——完成 2. 绘制给定数据集的分布曲线 - 完成 3. 为该数据集绘制完美的正态分布曲线(红线)- 问题 我假设问题出在第二个stat_function.
代码 运行-able w/o 任何准备工作:
data <- data.frame(c(runif(30,1,50)),c(runif(30,50,1)))
g.data <- data[,1]
graph <- ggplot(data, aes(g.data))
graph <- graph +
geom_histogram(aes(y = ..density..), binwidth = 2, fill = 'pink') +
labs(x = 'Data', y ='Density') +
stat_function(fun = dnorm, args = list(mean = mean(g.data, na.rm = T),
sd = sd(g.data, na.rm =T)), colour ='black', size =1) +
theme(legend.position = 'none') +
stat_function(fun = dnorm, colour = "red", args = list(mean = mean(g.data)))
graph
这是我得到的
这里是我大概需要的,完美的规范。分布
正态分布有两个参数:均值和标准差。这里你只提供 dnorm 的平均值,所以它假设 sd = 1
.
您提供的代码的更正版本是:
data <- data.frame(c(runif(30,1,50)))
ggplot(data, aes(data[,1])) +
geom_histogram(aes(y = ..density..), binwidth = 2, fill = 'pink') +
labs(x = 'Data', y = 'Density') +
stat_function(fun = dnorm,
args = list(mean = mean(data[,1], na.rm = TRUE),
sd = sd(data[,1], na.rm = TRUE)),
colour = 'black', size = 1)