如何在R中使用curve()对图形着色

如何在R中使用curve()对图形着色,r,ggplot2,plot,graph,area,R,Ggplot2,Plot,Graph,Area,我正在绘制标准正态分布图 curve(dnorm(x), from=-4, to=4, main = "The Standard Normal Distibution", ylab = "Probability Density", xlab = "X") 出于教学方面的原因,我想在我选择的某个分位数下对区域进行着色。我该怎么做 如果您想使用曲线和底图,那么您可以使用多边形自己编写一个小函数: colorArea <- function(from, to, density,

我正在绘制标准正态分布图

curve(dnorm(x), from=-4, to=4, 
  main = "The Standard Normal Distibution", 
  ylab = "Probability Density",
  xlab = "X")

出于教学方面的原因,我想在我选择的某个分位数下对区域进行着色。我该怎么做

如果您想使用
曲线
和底图,那么您可以使用
多边形
自己编写一个小函数:

colorArea <- function(from, to, density, ..., col="blue", dens=NULL){
    y_seq <- seq(from, to, length.out=500)
    d <- c(0, density(y_seq, ...), 0)
    polygon(c(from, y_seq, to), d, col=col, density=dens)
}

我们也可以使用以下
R
代码,以便在特定(给定)分位数下对标准正态曲线下的区域进行着色:

library(ggplot2)
z <- seq(-4,4,0.01)
fz <- dnorm(z)
q <- qnorm(0.1) # the quantile
x <- seq(-4, q, 0.01)
y <- c(dnorm(x), 0, 0)
x <- c(x, q, -4)
ggplot() + geom_line(aes(z, fz)) +
           geom_polygon(data = data.frame(x=x, y=y), aes(x, y), fill='blue')
库(ggplot2)
Z
library(ggplot2)
z <- seq(-4,4,0.01)
fz <- dnorm(z)
q <- qnorm(0.1) # the quantile
x <- seq(-4, q, 0.01)
y <- c(dnorm(x), 0, 0)
x <- c(x, q, -4)
ggplot() + geom_line(aes(z, fz)) +
           geom_polygon(data = data.frame(x=x, y=y), aes(x, y), fill='blue')