gpt4 book ai didi

r - ggplot 用不同的颜色填充每个标准差

转载 作者:行者123 更新时间:2023-12-05 03:52:27 24 4
gpt4 key购买 nike

我一直在网上四处寻找,但找不到如何使用 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")

Plot

我想要的是填充第一个标准差一种颜色,第二个标准差填充另一种颜色,依此类推。我还注意到曲线看起来并不平滑。有什么理由吗?

提前致谢。

最佳答案

要使用 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()

enter image description here

关于r - ggplot 用不同的颜色填充每个标准差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62187066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com