Verfasst am: 30.03.2011, 15:57
Titel: horizontale Linie in plotyy --- stairs()?
Ich hab zwei Kurven, die ich mit plotyy() plotte, sodass jede ihre eigene Y-Achse hat. Zudem hab ich ne vertikale rote Linie reingebastelt. So weit, so gut.
Nun hätte ich aber gerne noch eine horizontale Linie, und zwar sollte die Position durch die rechte der beiden Achsen bestimmt werden. Die vertikale Linie war ja kein Problem, da beide Kurven die gleiche X-Achse haben, aber wie ich für die horizontale Linie die rechte Y-Achse anwählen kann... kA.
Hier mal der Code-Ausschnitt, der den Plot erstellt (den ganzen Code hab ich als m-file in den Anhang gepackt):
for j=1:i % rote vertikale Linie bei erstem Regentag (Start 'days since rain'-Index) if days_since_rain(j) ~= -1 line([j j],[0max(days_since_rain)+1],'Color','red');
break end end
Da ist jetzt kein Versuch drin, diese horizontale Linie zu plotten, da keiner der ergoogleten Ansätze geklappt hat... Der Code plottet nur die beiden Kurven plus die vertikale Linie.
Ich hab übrigens auch versucht, zwei Plots übereinander zu legen, statt plotyy() zu benutzen. Das Übereinanderlegen hat auch geklappt (mit 'hold on'), allerdings gelang es mir nicht, die Y-Achse des ersten Plots links zu positionieren und die des zweiten Plots rechts, es war jeweils nur eine Achse sichtbar (müsste die des zweiten Plots gewesen sein). Für diesen Ansatz hab ich keinen Code (schon gelöscht da nicht geklappt); war auch nur 'plot(...)/hold on/plot(...).
Falls also jemand eine Lösung ohne plotyy hat, ist mir das auch recht. Ich wär einfach froh um IRGENDEINE Lösung...
die handles der Axes hast du übrigens schon in AX drin, die musst du nicht extra suchen.
Oh danke für den Hinweis, habs jetzt sogar selbständig geschafft, die Achse mit AX anzusprechen. Ich hab übrigens erst jetzt gerafft, dass AX die Achsen und H1/2 die zwei Kurven anspricht (was heisst eigentlich H?), hab die drei Parameter einfach aus nem Beispiel in der Dokumentation übernommen...
Zitat:
Linie malen geht dann so:
Code:
line([010], [5050],'color','r','parent',AX(2)) %Linie bei 10 der rechten Achse
Jetzt hab ich allerdings gleich noch ne Anschlussfrage. Und zwar würde es Sinn machen, die Kurven als Treppenfunktionen darzustellen. Mittels Google hab ich auch herausgefunden, dass man die mit stairs() erstellen kann. Nur steh ich dann wieder vor dem Achsenproblem. Ich müsste dann wohl zwei solche stairs()-Plots übereinanderlegen.
Wie krieg ich das hin, dass ich den zweiten Stairs-Plot mit Y-Achse rechts über den ersten mit Y-Achse links legen kann, sodass es unterm Strich wieder einen einzelnen Plot mit zwei Y-Achsen ergibt (analog zu dem, den ich schon habe, halt einfach mit Treppenkurven)?
Wie krieg ich das hin, dass ich den zweiten Stairs-Plot mit Y-Achse rechts über den ersten mit Y-Achse links legen kann, sodass es unterm Strich wieder einen einzelnen Plot mit zwei Y-Achsen ergibt (analog zu dem, den ich schon habe, halt einfach mit Treppenkurven)?
Ich wollte gerade posten wie es z.B. fuer den nicht "trivialen" Fall einer Linie funktionieren wuerde, in dem Sinne passt es ja gut
Code:
figure;
axes('Nextplot','add'); % schneller als hold on
x = 1:0.1:10;
y1 = tan(x);
y2 = sin(x);
y3 = cos(x);
[ax] = plotyy(x,y1,x,y2);
[ax2] = plotyy(x,y1,x,y3);
% hier wird die Y-Achse vom 1. plotyy fuer den 2. plotyy uebernommen (Limits,Ticks,Beschriftungen) set(ax2(2),'YLim',get(ax(2),'YLim')) set(ax2(2),'YTick',get(ax(2),'YTick')) set(ax2(2),'YTickLabel',get(ax(2),'YTickLabel'))
Super, jetzt sollte es klappen. Nach etwas herumrätseln hab ich es jetzt auch geschafft, die Stairs-Funktion in plotyy zu integrieren. Jetzt hab ich zwar grad ein heilloses Treppendurcheinander im Plot (bzw. es sieht einfach so aus weil die Linien ineinander verschwinden), das krieg ich aber ja jetzt aufgeräumt, wo ich die Grundlagen dazu hab.
Danke für die schnellen und hilfreichen Antworten!
mfg
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.