How can I use various colors to fill the area under a normal distribution curve?
15 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Navid
am 28 Nov. 2023
Kommentiert: Star Strider
am 28 Nov. 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 Kommentare
Akzeptierte Antwort
Star Strider
am 28 Nov. 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 Kommentare
Weitere Antworten (2)
Angelo Yeo
am 28 Nov. 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 Kommentare
Chunru
am 28 Nov. 2023
Bearbeitet: Chunru
am 28 Nov. 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 Kommentare
Chunru
am 28 Nov. 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))
Siehe auch
Kategorien
Mehr zu Graphics Performance finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!