我一直在网上四处寻找,但找不到如何使用 ggplot 和 stat_function 填充正态分布下的不同部分的明确答案 --> dnorm。
#Parameters
mu = 18.7
sigma = 36.4
n = 168
x = c(mu - 4*sigma/sqrt(n), mu + 4*sigma/sqrt(n))
这是我的剧情
ggplot(data, aes(x)) +
stat_function(fun = dnorm,
args = list(mean = mu, sd = sigma/sqrt(n)),
geom = "area",
fill = "steelblue")
我想要的是填充第一个标准差一种颜色,第二个标准差填充另一种颜色,依此类推。 我还注意到曲线看起来并不平滑。有什么理由吗?
提前致谢。
最佳答案
要使用 stat_function
获得不同的颜色,您可以使用 xlim
参数,例如,
ggplot(data.frame(x), aes(x)) +
stat_function(fun = dnorm,
args = list(mean = mu, sd = sigma/sqrt(n)),
geom = "area",
fill = "steelblue", n = 1001) +
stat_function(fun = dnorm,
args = list(mean = mu, sd = sigma/sqrt(n)),
geom = "area",
fill = "chartreuse", n = 1001, xlim = c(mu - sigma / sqrt(n), mu))
这可能会变得乏味,所以如果您希望每个标准差都不同,那么生成函数数据并直接使用 geom_area
会更简单:
sim_dat = data.frame(x = seq(x[1], x[2], length.out = 1001))
sim_dat$y = dnorm(sim_dat$x, mean = mu, sd = sigma / sqrt(n))
sim_dat$sds = cut(sim_dat$x, breaks = c(-Inf, mu + sigma / sqrt(n) * (-3:3), Inf), labels = setdiff(-4:4, 0))
ggplot(sim_dat, aes(x, y, fill = sds)) + geom_area()
关于r - ggplot 用不同的颜色填充每个标准差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62187066/