library(ggplot2)
## Warning: le package 'ggplot2' a été compilé avec la version R 4.2.3
#x <- seq(-4,4, length=1000)
#hx <- dnorm(x,mean=0, sd=1)
#plot(x, hx, type="l", xlab="valeur de x",
#     ylab="Densité", main="loi normale")
shadenorm = function(below=NULL, above=NULL, pcts = c(0.025,0.975), mu=0, sig=1, numpts = 500, color = "gray", dens = 40,
                     
                     justabove= FALSE, justbelow = FALSE, lines=FALSE,between=NULL,outside=NULL){
  
  
  
  if(is.null(between)){
    
    below = ifelse(is.null(below), qnorm(pcts[1],mu,sig), below)
    
    above = ifelse(is.null(above), qnorm(pcts[2],mu,sig), above)
    
  }
  
  
  
  if(is.null(outside)==FALSE){
    
    below = min(outside)
    
    above = max(outside)
    
  }
  
  lowlim = mu - 4*sig
  
  uplim  = mu + 4*sig
  
  
  
  x.grid = seq(lowlim,uplim, length= numpts)
  
  dens.all = dnorm(x.grid,mean=mu, sd = sig)
  
  if(lines==FALSE){
    
    plot(x.grid, dens.all, type="l", xlab="X", ylab="Density")
    
  }
  
  if(lines==TRUE){
    
    lines(x.grid,dens.all)
    
  }
  
  
  
  if(justabove==FALSE){
    
    x.below    = x.grid[x.grid<below]
    
    dens.below = dens.all[x.grid<below]
    
    polygon(c(x.below,rev(x.below)),c(rep(0,length(x.below)),rev(dens.below)),col=color,density=dens)
    
  }
  
  if(justbelow==FALSE){
    
    x.above    = x.grid[x.grid>above]
    
    dens.above = dens.all[x.grid>above]
    
    polygon(c(x.above,rev(x.above)),c(rep(0,length(x.above)),rev(dens.above)),col=color,density=dens)
    
  }
  
  
  
  if(is.null(between)==FALSE){
    
    from = min(between)
    
    to   = max(between)
    
    
    
    x.between    = x.grid[x.grid>from&x.grid<to]
    
    dens.between = dens.all[x.grid>from&x.grid<to]
    
    polygon(c(x.between,rev(x.between)),c(rep(0,length(x.between)),rev(dens.between)),col=color,density=dens)
    
  }
  
   
}

shadenorm(below=1.645, justbelow = TRUE)
text(1.8,0,~alpha[p])
text(0,0.2,~alpha, cex=2)