Verfasst am: 06.03.2013, 14:59
Titel: Plot: Drei Graphen, Zwei verschiedene Y-Achsen ?!
Hallo zusammen,
Ich möchte eine einzige Grafik/Figure erstellen, in welche drei verschiedene Graphen eingetragen werden sollen.
Zwei davon sollen zu einer Y-Achse am linken Rand gehören und einer soll eine eigene Y-Achse rechts an der Grafik haben. Die X-Achse soll die gleiche sein. Irgendwie bekomm ich das nicht hin
Verfasst am: 06.03.2013, 16:43
Titel: Re: Plot: Drei Graphen, Zwei verschiedene Y-Achsen ?!
Hallo Mandel,
Was hast Du denn bisher versucht und was hat nicht funktioniert?
es ist immer viel leichter einen Verbesserungsvorschlag zu machen, als den ganzen Code zu erstellen und dabei zu erraten, wie Deine Inputs aussehen könnten.
Funktioniert nicht heißt, dass das ich nur die dritte Funktion (f2./f1) sehe. Zwar mit der Achse auf der richtigen/rechten Seite, aber die beiden anderen Funktionen seh ich nicht
PLOTYY kann auch zwei Graphen auf der einen und einen dritten auf der anderen Y-Achse darstellen.
Auf http://www.mathworks.com/help/matla.....ultiple-x-and-y-axes.html wird erklärt, wie man die Handles der beiden AES-Objekte erhält und dann z.B. per LINE() weitere Objekte in eines der AXES zeichnen kann. Zudem kann man bei den Inputs von PLOTYY (und auch PLOT) auch ein Array angeben:
Bis auf einen Schönheitsfehler:
Die x- bzw. y-Beschriftung passt nicht mehr auf's Bild
Hab mir gedacht, ich versetz die Achsenbeschriftung einfach ein wenig. Aber wenn ich
Das PNG-Bild sieht wirklich sher merkwürdig aus: Der X-Label ist nicht nur doppelt, einer davon ist auch noch grau.
"copyobj(gca,gcf)" ist eine sehr ungewöhnliche Operation: Da wird die aktuelle AXES in die aktuelle FIGURE kopiert, aber laut Definition muss die aktuelle AXES immer im aktuellen FIGURE liegen. Wozu ist dies dann nützlich?
Glaubst Du, dass COPYOBJ nich verantwortlich ist, oder weißt Du es?
Immerhin erstellt es eine Kopie eines Grafik-Objektes, und Du hast eine Kopie eines Grafik-Objektes zu viel in Deiner Figure.
Da von wirklich wissen zu sprechen ist überrieben...
Aber Fakt ist, wenn ich den genannten Teil und NICHT COPYOBJ raus nehme ist die Schrift nicht so verschoben. Nur eben die Achsen sind nicht mehr wie sie sein sollten...
Wenn ich stattdessen COPYOBJ raus nehme, sind die Achsen wie sie sein sollten, aber meine Achsenbeschriftungen fehlen
So... Hab noch bisschen rumgespielt...
Das COPYOBJ hat scheinbar die Funktion, dass ich das Grid in Grau färben kann, meine Achsen aber schwarz bleiben. Anbei ein Bild mit COPYOBJ und ohne. Hab den Quelltext mal bisschen umarrangiert:
Dadurch, dass ich die Xlabel-Sachen jetzt hinten dran habe, scheine ich was bewegen zu können. Die Schrift kann ich jetzt ohne seltsame Kopien in der figure verrücken. Das ist schon mal gut, ABER:
Ich kann das y-Label nicht so weit nach rechts rücken wie ich wöllte, da ich sonst in die Achsenbeschriftung rein komme. Die weicht nicht aus
Wie kann ich das GANZE im sichtbarren Bereich nach rechts verrücken?
Ganz im Ernst: Das COPYOBJ ist hier vollkommen überflüssig. Es kopiert das aktuelle AXES Objekt in die aktuelle Figure, wo es aber breits existiert. Da das an Magie grenzt, empfehle ich dringed, es wegzulassen und stattdessen den Code ordentlich zu reparieren.
Es lohnt sich beim Programmieren nie, einen Flicken auf einen Flicken zu setzen, und noch einen obendrauf. Im Gegensatz zu Hosen kann man Matlab Code so reparieren, dass er hinterher nahtlos in Ordnung ist.
Was bisher im Code passiert:
Mache das XGrid und YGrid grau ("set(gca,'Xcolor',[gc gc gc]);"), schalte das Grid ein, kopiere die AXES auf sich selbst oben drauf, mache das Grid schwarz, schalte das X/YGrid wieder aus.
Das ist total vermodelt und es wundert mich nicht, dass nicht das erwartete herauskommt.
Die beste Idee wäre es aber, den gesamten Code nochmal von vorne zu schreiben.
Gruß, Jan
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.