仅对正常曲线下的部分顶部区域进行着色

Shading only part of the top area under a normal curve

我试图在正态曲线下的区域中添加阴影,比如在一个标准差之间但不是一直到 x 轴。我需要将其切断以仅在曲线阴影下的顶部。在我下面的代码中,我想对正常曲线下的区域进行阴影处理,但仅在 2 条虚线之间。谁能帮忙?我见过很多例子,其中部分区域的阴影一直向下延伸到 x 轴。但是,我需要一些方法来阻止用户定义的曲线下区域的下部被着色。

library(ggplot2)

#generate a normal distribution plot
Fig1 <- ggplot(data.frame(x = c(-4, 4)), aes(x = x)) +
        stat_function(fun = dnorm, args = list(mean=0, sd=1.25),colour = "darkblue", size = 1.25) +
        theme_classic() +
        geom_hline(yintercept = 0.32, linetype = "longdash") +
        geom_hline(yintercept = 0.175, linetype = "longdash")
Fig1

您可以将geom_polygon与您的分布数据/下限线的子集一起使用。

library(ggplot2)
library(dplyr)

# make data.frame for distribution
yourDistribution <- data.frame(
  x = seq(-4,4, by = 0.01),
  y = dnorm(seq(-4,4, by = 0.01), 0, 1.25)
)
# make subset with data from yourDistribution and lower limit
upper <- yourDistribution %>% filter(y >= 0.175)

ggplot(yourDistribution, aes(x,y)) +
  geom_line() +
  geom_polygon(data = upper, aes(x=x, y=y), fill="red") +
  theme_classic() +
  geom_hline(yintercept = 0.32, linetype = "longdash") +
  geom_hline(yintercept = 0.175, linetype = "longdash")