# How can I shade an area under a curve between two lines?

I am plotting a normal curve and I want shaded some areas in this curve. I want to shaded to values minor than -1.96 e greater than 1.96. I tried some options: fill and fill area but I didn’t get sucess.

x = rand( Normal( 0 , 1 ),1000000)
plot(x,seriestype=:density,label=“x series”)
vline!([-1.96], line=:dash)
vline!([1.96], line=:dash)

Try vspan! or hspan! instead of vline!.

3 Likes

https://github.com/mcreel/Econometrics/blob/master/src/NP/npdensity.jl

will do that, a screenshot of the appearance is at https://github.com/mcreel/Econometrics

1 Like

Thank you!! It works!

Maybe you could share an example of usage? That would help future readers fine-tune their shading options

1 Like

I change the npdensity(z) of mcreel to work with superior and inferior limits to solve my problem. I want to plot the normal curve to show examples of hypothesis testing.

``````using KernelDensity, Plots, Distributions

function npdensity(z,inferior,superior)

n = size(z,2)
p = zeros(n)
for i = 1:n
x = z[:,i]
y = kde(x)
q05 = quantile(x,0.05)
Plots.plot(range(minimum(x), stop=inferior, length=100),z->pdf(y,z), color=:red, fill=(0,0.5,:red), label="-Zc")
q95 = quantile(x,0.95)
Plots.plot!(range(inferior, stop=superior, length=100),z->pdf(y,z), color=:green, fill=(0,0.5,:green),label="Região de Aceitação")
Plots.plot!(range(superior, stop=maximum(x), length=100),z->pdf(y,z), color = :red, fill=(0,0.5,:red),label="Zc")
m = mean(x)
Plots.plot!([m,m],[0,pdf(y,m)],color=:blue, label="média")
m = median(x)
if i == 1
p = Plots.plot!([m,m],[0,pdf(y,m)],color=:black, label="mediana")
else
p = [p, Plots.plot!([m,m],[0,pdf(y,m)],color=:black, label="mediana")]
end
end
return p
end

parafusos = rand( Normal( 0 , 1 ),1000000)
npdensity(parafusos,-1.96,1.96)
``````