How can I use various colors to fill the area under a normal distribution curve?
22 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Navid
el 28 de Nov. de 2023
Comentada: Star Strider
el 28 de Nov. de 2023
Hi, I obtained a probability distribution for my data using the following syntax:
h = histfit(data);
and then:
pd = fitdist(data,'Normal');
I want to create a graph similar to Figure 1 using the mean and standard deviation values obtained from the histogram and fitted distribution.
In advance, I would like to express my gratitude for your assistance.
Figure 1:
0 comentarios
Respuesta aceptada
Star Strider
el 28 de Nov. de 2023
Sure!
Try this —
x = linspace(1.5, 5, 250);
mu = 3.3;
s = 0.6;
y = normpdf(x, mu, s);
figure
plot(x, y)
hold on
Lv1 = (x>=mu) & (x<mu+s);
patch([x(Lv1) flip(x(Lv1))], [zeros(size(y(Lv1))) flip(y(Lv1))], 'g', 'EdgeColor','none')
Lv2 = (x>=mu+s) & (x<mu+2*s);
patch([x(Lv2) flip(x(Lv2))], [zeros(size(y(Lv2))) flip(y(Lv2))], 'y', 'EdgeColor','none')
Lv3 = (x>=mu+2*s) & (x<mu+3*s);
patch([x(Lv3) flip(x(Lv3))], [zeros(size(y(Lv3))) flip(y(Lv3))], 'r', 'EdgeColor','none')
hold off
.
6 comentarios
Más respuestas (2)
Angelo Yeo
el 28 de Nov. de 2023
f = @(x, mu, sd) 1/(sd*sqrt(2*pi)) * exp(-1/2*((x-mu)/sd).^2);
x = linspace(1.5, 5, 1000);
mu = 3.25; sd = 0.5;
figure;
hold on;
x_zone1 = linspace(mu, mu+sd, 300);
x_zone2 = linspace(mu+sd, mu+2*sd, 300);
x_zone3 = linspace(mu+2*sd, mu+3*sd, 300);
area(x_zone1, f(x_zone1, mu, sd), 'FaceColor', 'g')
area(x_zone2, f(x_zone2, mu, sd), 'FaceColor', 'y')
area(x_zone3, f(x_zone3, mu, sd), 'FaceColor', 'r')
plot(x, f(x, mu, sd), 'color','k', 'linewidth', 2);
0 comentarios
Chunru
el 28 de Nov. de 2023
Editada: Chunru
el 28 de Nov. de 2023
data = randn(8192, 1);
h = histfit(data);
pd = fitdist(data,'Normal')
figure;
x = linspace(-4*pd.sigma, 4*pd.sigma, 1001);
p = pdf(pd, x);
figure;
plot(x, p);
hold on
facecolor =["g", "y", "r"]
for i=1:3
idx = (x >= (i-1)*pd.sigma) & (x < i*pd.sigma);
area(x(idx), p(idx), FaceColor=facecolor(i))
end
3 comentarios
Chunru
el 28 de Nov. de 2023
It seems that you are using older version of matlab. Use the following name-value syntax for older version matlab.
area(x(idx), p(idx), 'FaceColor', facecolor(i))
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!