Verfasst am: 11.09.2019, 15:39
Titel: Viele Plots in einem Figure(zu wenig Farben)+Legende anfüge
Hallo Leute,
ich hab nochmal ein Problem. Ich möchte in meinem Programm eine variierende Anzahl von Variablen plotten.Es können zwischen 1 und 25 Plotts werden, die übereinander in eine Figure geplottet werden sollen. Zwecks übersichtlichkeit natürlich alle in einer eigenen Farbe und mittels Legende eindeutig zuweisbar. Meine Idee war ein Variable mit 25 verschiedenen Farbabkürzungen zu füllen und diese dann immer in der plot Schleife um eine Farbe weiter zu wechseln. Leider sind in der Matlab Hilfe für plot nur einige Farbabkürzungen angegeben. Habt ihr eine Idee wie man noch mehr Farben bekommt oder wie man das Problem vielleicht anders angehen kann?
Meine zweite Frage bezieht sich auf das Thema Legende.
Es gibt in meiner GUI mehrere Axes. Ich habe versucht eine Legende mit diesem Befehl einzufügen:
Dazu sollte CarList{CL} selbst wieder ein Cell Array mit chars sein.
Ich finde übrigens App Designer deutlich angenehmer in der Handhabung als GUIDE, mit dem du vermutlich arbeitest (handles.axes…).
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich verstehe nicht ganz was du mit nx3-Array meinst. Kannst du mir das genauer erklären?
Das mit der Legende funkioniert jetzt durch deinen Tipp, allerdings plotte ich Punktewolken und in der Legende werden mir dann neben jedem Fahrzeug nur ganz kleine Punkte angezeigt. gibt es da die eine Möglichkeit ein Linie anzuzeigen, damit die Fabe erkennbar wird?
Ich verstehe nicht ganz was du mit nx3-Array meinst.
Wenn du z.B. 25 Farben hast, dann ein 25x3-Array. Jede Zeile ist der RGB-Code einer Farbe, skaliert auf [0, 1].
Zitat:
gibt es da die eine Möglichkeit ein Linie anzuzeigen, damit die Fabe erkennbar wird?
Kann man sicher hinbiegen, muss man aber evtl. etwas basteln. Ich kann mir z.B. vorstellen, eine Linie mit NaN zu plotten und die Legende für diese anzuzeigen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Jetzt hab ich es verstanden. Werde mich die Tage mal ran machen und eine Lösung suchen. Die Idee mit den NaN ist echt gut. So werde ich es wohl machen. Vielen Dank für die guten Tipps.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
%Plot Cam In in axes1
ylabel(handles.axes1,'CAM In [°]');
xlabel(handles.axes1,'Drehzahl [1/min]');
plot(handles.axes1,RaceMatrixfinal{CL}{z}(:,RPM),RaceMatrixfinal{CL}{z}(:,CamIn),'Color',1/255*colors(CL,:));
%Plot Cam Out in axes2
ylabel(handles.axes2,'CAM Out [°]');
xlabel(handles.axes2,'Drehzahl [1/min]');
plot(handles.axes2,RaceMatrixfinal{CL}{z}(:,RPM),RaceMatrixfinal{CL}{z}(:,CamOut),'Color',1/255*colors(CL,:));
%Plot IgnAdv in axes3
ylabel(handles.axes3,'IgnAdv [°]');
xlabel(handles.axes3,'Drehzahl [1/min]');
plot(handles.axes3,RaceMatrixfinal{CL}{z}(:,RPM),RaceMatrixfinal{CL}{z}(:,IgnAdv),'Color',1/255*colors(CL,:));
%Plot Lambda in axes4
ylabel(handles.axes4,'Lambda');
xlabel(handles.axes4,'Drehzahl [1/min]');
plot(handles.axes4,RaceMatrixfinal{CL}{z}(:,RPM),RaceMatrixfinal{CL}{z}(:,LambdaL),'Color',1/255*colors(CL,:));
Der Farbwechsel funktioniert prima. Allerdings weiß ich jetzt nciht genau wo ich beim plot Befehl die Ausgabe ils Punktewolke einfügen kann. Immer wenn ich '.' in den Befehl beifüge kommt der Fehler: Error using plot
Data must be a single matrix Y or a list of pairs X,Y.
Das Problem mit der Legende funktioniert im Grunde eigentlcih auch. Allerdings wird mir am Ende immer nur der letzte Autoname angezeigt. Wie schaffe ich es, dass die Legende sich in der Schleife nicht überschreibt sondern nur erweitert um den nächsten plot?
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich habe jetzt mal versucht p mit dem Schleifenzähler CL zu belegen. In der Legende bekommt der plot p dann den passenden Autonamen aus CL zugewiesen. Das funktioniert auch soweit, bis die Schleife auf end kommt. Dann steht nur noch der aktuelle plot da mit der richtigen Farbe und Bezeichnung.
Leider kann ich dir im Moment kein Beispiel hochladen.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Leider funktioniert es immernoch nicht. Ich verstehe einfach niht woran es liegt. Ich hab dir mal ein kurzes Beispiel erstellt mit dem passenden Figure und der zugehörigen Racematrixfinal. Vielleicht kannst du da mal drüber schauen und erkennst den Fehler. Ich komme einfach nicht weiter.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ich habe zu beginn meines vollständigen Code alle Axes auf Hold on gesetzt. Im Beispiel habe ich den Teil wohl abgeschnitten.
Wenn ich jetzt wie du mir geschrieben hast am Ende :
vielleicht noch eine andere Kleinigkeit?
Wenn's jetzt funktioniert, ist es ja gut.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ja jetzt klappt es auf jeden Fall so wie ich es wollte. Ich danke dir wirklich sehr für die Hilfe.
Einstellungen und Berechtigungen
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.