Я хотел бы добавить к ответу @Prasad Chalasani тех, кто, как и я, которые хотели добавить все 3 области.1 Std - самый темный оттенок, 2 Std - средний оттенок, а 3 Std - самый светлый.Среднее значение - это черная линия, а медиана - белая линия.
set.seed(501) # Make random sample reproducible
x <- as.vector(rnorm(100))
d <- as.data.frame(x=x)
library(ggplot2)
p <- ggplot(data=d) +
theme_bw() +
geom_density(aes(x=x, y = ..density..), color = '#619CFF')
# new code is below
q15.9 <- quantile(x, .159) # 1 Std 68.2%
q84.1 <- quantile(x, .841)
q2.3 <- quantile(x, .023) # 2 Std 95.4%
q97.7 <- quantile(x, .977)
q0.01 <- quantile(x, .001) # 3 Std 99.8%
q99.9 <- quantile(x, .999)
meanx <- mean(x)
medx <- median(x)
x.dens <- density(x)
df.dens <- data.frame(x=x.dens$x, y=x.dens$y)
p + geom_area(data = subset(df.dens, x >= q15.9 & x <= q84.1), # 1 Std 68.2%
aes(x=x,y=y), fill='#619CFF', alpha=0.8) +
geom_area(data = subset(df.dens, x >= q2.3 & x <= q97.7), # 2 Std 95.4%
aes(x=x,y=y), fill='#619CFF', alpha=0.6) +
geom_area(data = subset(df.dens, x >= q0.01 & x <= q99.9), # 3 Std 99.8%
aes(x=x,y=y), fill='#619CFF', alpha=0.3) +
geom_vline(xintercept=meanx) +
geom_vline(xintercept=medx, color='#FFFFFF')