仅对正常曲线下的部分顶部区域进行着色
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")
我试图在正态曲线下的区域中添加阴影,比如在一个标准差之间但不是一直到 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")