Legend Befehl in Matlab zeichnet falsche Farbe

Gast #4614488
Lesenswert?

Hallo, dieser Skript plottet die Legende falsch. Nämlich werden die in 
grün gezeichneten + in der Legende als rot gezeichnet.

Der Skript soll das Histogramm, Whkdichte,den Mittelwert sowie die 
Mittelwert+- Standartabweichung anzeigen.
1
m1 = mean(y);
2
s1 = sqrt(var(y));
3
Fm1 = 400;
4
Fs1p = 240;
5
Fs1m = 240;
6
vm1 = 0:18:Fm1;
7
vs1p = 0:18:Fs1p;
8
vs1m = 0:18:Fs1m;
9
figure;
10
histfit(y)
11
hold on
12
grid on
13
axis([0.08 0.22 0 700])
14
plot(m1,vm1,'r+')
15
plot(m1-s1,vs1p,'g+')
16
plot(m1+s1,vs1m,'g+')
17
legend('Histogramm','Wahrschlichkeistsdichte','\mu - \sigma', '\mu','\mu + \sigma')


Weiß jemand woran es liegen könnte?
#4617694
Lesenswert?

Legend guckt einfach nur das aktuelle axes Object an, sucht die children 
von vorne nach hinten ab und gibt den ersten N (in deinem Fall N = 5) 
Kindern in den Farben, wie sie geplottet werden einen Namen.

Vergleiche mal:
1
figure
2
subplot(211)
3
hold all
4
x = 1:5;
5
plot(x, rand(length(x), 3), 'linewidth', 1.5); % plotte 3 verschiedene zufällige Kurven und speichere die handles
6
plot(x,rand(length(x), 2), 'linewidth', 1.5); % 2 weitere
7
legend({'eins','vier','fünf'})
8

9
subplot(212)
10
hold all
11
h = gobjects;
12
h(1:3) = plot(x, rand(length(x), 3), 'linewidth', 1.5); % plotte 3 verschiedene zufällige Kurven und speichere die handles
13
h(4:5) = plot(x, rand(length(x), 2), 'linewidth', 1.5); % 2 weitere
14
legend(h([1 4:5]),{'eins','vier','fünf'})

Im ersten Fall schreibt der halt an die ersten 3 Plots die Legende. Im 
zweiten Fall genau denen, die du ausgewählt hast, indem du die plot 
handles mitgibst.

In deinem Fall passiert das, weil laut 
http://www.mathworks.com/help/stats/histfit.html bei h = histfit(bla) 
ebenfalls zwei handles zurück gegeben werden, einmal der plot handle zu 
deinem histogram h(1) und zu deinem density plot h(2).

Klarer geworden?

Schöne Grüße,
Jan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren