Verfasst am: 06.07.2008, 09:38
Titel: Farbprobleme mit der Legende
Hallo,
ich arbeite seit ca. einer Woche mit Matlab und habe ein erstes Skript geschrieben, welches mir Messdateien automatisch auswertet.
Zu Beginn dieses Skripts habe ich die Abfrage eingebaut, wieviele Messungen gemacht wurden. Darauf folgt dann eine for-Schleife bis zur letzten Messung (Berücksichtigung der Eingabe vom Nutzer).
Jetzt stellt sich mir folgendes Problem. Die for-Schleife wird mehrmals durchlaufen und jedesmal eine andere Messdatei eingelesen, ausgewertet und geplottet (ins selbe Diagramm!).
Ich füge am Ende jedesmal mit einer IF-Scleife die Legende hinzu. Dabei tritt aber dann folgendes Problem auf. Die Farben der Graphen stimmen nicht mit den Legendeneinträgen überein. Ich habe den entsprechenden Skript Teil mal hier mit gepostet. Unten stehen dann meine Fragen dazu.
hold on; % Plotten der Funktion if n == 0; plot(frequenz,Uebertrfunktion,´b´);end
if n == 5; plot(frequenz,Uebertrfunktion,´g´);end
if n == 10; plot(frequenz,Uebertrfunktion,´y´);end
.
.
.
xlabel('Frequenz [Hz]');
ylabel('Übertragungsfunktion der Geschwindigkeit [m/s / V]'); % beschriftet y-Achse if n == 0; y_max = Uebertrfunktion + 0.005; AXIS([35000550000max(y_max)]);end
.
.
.
if n == 10; legend off; legend('1 Volt','5 Volt','10 Volt',1);end
if n == 5; legend('1 Volt','5 Volt',1);n=n+5;end
if n == 0; legend('1 Volt',1);n=n+5;end
Jetzt zu meinen Fragen:
1. Kann jemand erkennen warum das nicht klappen kann mit den Farbeinträgen? Ich habe das Gefühl, dass ihm die IF-Schleifen Probleme machen.
2. Kann man die Farben der Legndenbeschriftung manuell verändern?
3. Wenn ja wie lautet der Befel dazu.
PS: Das Skript ist bestimmt nicht genial, aber denkt daran, dass ich absoluter Newbie bin und mich erst seit wenigen Tagen mit Matlab beschäftige! Danke!
Edit by Martin: Ich habe mal freundlicherweise die Code-Formatierung eingefügt
versuch doch mal hier im Forum den SourceCode in eine Code-Umgebung zu verpacken. Einfach auf den "Code"-Button drücken oder das Label manuell setzen. Das macht das ganze etwas übersichtlicher.
Ich versuche mal generell an deinem Code was zu beanstanden:
Läuft die for-Schleife mit n als Laufvariable? Du inkrementierst die nämlich etwas später um 5, das wird aber schon mal nicht ausgeführt (bzw. beim nächsten Durchgang wieder auf n+1 gesetzt.
Um mehrere if-Anweisungen nacheinander zu vermeiden, gibt es den switch-Befehl. Der könnte der Übersichtlichkeit dienen.
Falls du wirklich nur die Farbe in den Plot ändern willst, würde ich das eher so machen:
Wobei mir natürlich der Nutzen einer Legende bei nur gleichfarbigen Plots fern bleibt.
Explizit zu deinen Fragen:
1. Ich weiss es nicht genau - scheint auf dem ersten Blick eigentlich nix zu beanstanden zu geben. Entweder die if-Anweisung, das Inkrementieren der Laufvariablen in einer for-Schleife, der zusätzliche Parameter im legend-Befehl (was bewirkt die 1 am Ende denn?) oder .. naja, was anderes halt - sorry.
2. Mh, ohne es genau zu wissen sage ich mal nein. Das würde auch den Sinn einer Legende in Frage stellen. Die Farbe der Legende passt sich automatisch der Farbe des Plots an - auch bei selbstbeschworenen Farbänderungen.
3.
wobei ich s als 5 definiert hab und u der angesprochene Eingabewert ist.
Das Hochzählen von n ist wahrscheinlich überflüssig? Das macht die for-Schleife wahrscheinlich automatisch, oder?
Den switch Befehl kannte ich noch nicht. Vielen Dank dafür.
Leider meinte ich etwas anderes. Bei dir ändert sich die Farbe des Plots plus Legende.
Ich werte mehrere Messdateien hintereinander aus (for-Schleife) und will die alle in eine Figur kriegen und mir dann die Legende anzeigen lassen. Da hauts mir dann die Farben in der Legende durcheinander (blau und grün werden abgewechselt und die Farben des Plots nicht berücksichtigt), die ich für die einzelnen Messdateien beim Plotten definiert hab.
Das Einlesen und die Legende ist also abhängig von meiner Eingabe u am Anfang bis zu welcher Datei das Programm arbeiten soll.
Hier wird glaube ich ein ähnliches Problem beschrieben, ich versuch das mal:
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.