WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Doppelte y-Achse

 

clustering_n00b
Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 01.10.2011, 17:17     Titel: Doppelte y-Achse
  Antworten mit Zitat      
Hallo wiedermal Very Happy


Ich habe 6 Funktionen und moechte je 3 auf Einer y-Achse plotten.
Ich habe mir
Code:
angeschaut, aber das scheint nur fuer zwei Funktionen zu gehen.

Hat jemand einen guten Vorschlag? Shocked
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.10.2011, 01:16     Titel: Re: Doppelte y-Achse
  Antworten mit Zitat      
Hallo clustering_n00b,

Was suchst Du genau? Zwei Diagramme in einer Figure und jeweils 3 Kurven?
Dann wäre SUBPLOT und HOLD hilfreich.
Wenn Du etwas anderes brauchst, beschreibe es doch nochmal genauer.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 02.10.2011, 10:00     Titel:
  Antworten mit Zitat      
Hallo Jan!


Also mit der plot-Funktion kann man ja beliebig viele Funktionen plotten:
Code:
plot(x1, y1, x2, y2, x3, y3, ...)


Nun moechte ich das 6-mal machen (bis zu x6 und y6).
Das soll alles in der gleichen Figure angezeigt werden.
Nun ist das aber so, dass die ersten und letzten 3 Funktionen sehr diskrepante y-Bereiche haben, deshalb moechte ich zwei y-Achsen.

SUBPLOT will ich nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.10.2011, 10:27     Titel:
  Antworten mit Zitat      
Hallo clustering_n00b,

Dann liegst Du mit PLOTYY richtig. "help plotyy" erklärt:
Zitat:
[AX,H1,H2] = plotyy(...) returns the handles of the two axes created in AX

Die Handles kann man dann benutzen, um weitere Objekte einzuzeichnen:
Code:
[AX,H1,H2] = plotyy(1:10, rand(1, 10), 1:10, rand(1, 10)+100)
hold('on');
plot(H1, 'XData', 1:10, 'YData', sin(1:10), 'Color', 'r')

Der Aufruf mit der Property/Value-Methode ist etwas sperriger, aber notwendig um den Handle festzulegen. Das Hauptproblem ist aber, dass die schlaue Methode für bei Y-Achsen passende Y-Ticks zu finden so nicht funktioniert. Das ist aber möglich, wenn man die Daten als Matrix and PLOTYY gibt:
Code:
[AX,H1,H2] = plotyy(1:10, rand(3, 10), 1:10, rand(3, 10)+100);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 02.10.2011, 10:58     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo clustering_n00b,

Code:
[AX,H1,H2] = plotyy(1:10, rand(3, 10), 1:10, rand(3, 10)+100);

Gruß, Jan


Du meinst also ich soll je 3 y-Vektoren zu einer Matrix zusammenfassen?

Ok, aber was ist wenn ich die 3 mit einer anderen Linie/Farbe anzeigen will?
Z.B. Funktion 1 soll 'r' sein, Funktionen 2 und 3 sollen '--r' sein.

Geht das?
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 02.10.2011, 12:17     Titel:
  Antworten mit Zitat      
Ok, ich habe gerade etwas anders ausprobiert, und zwar habe ich 3-mal PLOTYY (mit je eine Funktion aus einer der beiden Achsenmengen) sequentiell aufgerufen.
Menge a: Range 0 - 50
Menge b: Range -4000 - 0
Code:

[g2, h1, h2] = plotyy(ax1, ay1, bx1, by1)
[g2, h1, h2] = plotyy(ax2, ay2, bx2, by2)
[g3, h1, h2] = plotyy(ax3, ay3, bx3, by3)


set(gca, 'xscale', 'log')
 


Ich bekomme jetzt jedoch eine verschwommene Figur, wo es scheint dass es 2 Mal die x- Achse abgebildet hat (3-mal x-Beschriftungen/Zahlen). Dann erscheint noch zusaetzlich eine Log-Skala unterdran.

Was soll das? Ich will nur die Log-Skala haben Question
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.10.2011, 19:16     Titel:
  Antworten mit Zitat      
Hallo clustering_n00b,

Code:
[AX,H1,H2] = plotyy(1:10, rand(3, 10), 1:10, rand(3, 10)+100);

Nun hast Du in H1 und H2 die Handles der einzelnen Linien und kannst deren Properties nach Belieben einstellen.
Z.B.:
Code:
set(H1(1), 'Color', 'r')


Wenn Du 3 mal PLOTYY aufrufst, werden insgesamt 6 AXES-Objekte erstellt. GCA ist dabei der Handle der zuletzt benutzten AXES. "Unscharf" könnte das werden, weil sie jeweils gegeneinander verschoben sind.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 03.10.2011, 17:29     Titel:
  Antworten mit Zitat      
Die Farben scheinen mit deiner Methode funktionieren.
Aber es werden immer noch 2 x-Achsen angezeigt (normal, log).

Wie zeigt man ausserdem die Legenden an?
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 04.10.2011, 15:58     Titel:
  Antworten mit Zitat      
Die Legenden habe ich rausfinden koennen.

Code:

legend(Hk(i), 'Name')
 


Aber die x-Achse erscheint immer noch doppelt Confused

Code:

[AX, h1, h2] = plotyy(x1, y1, x1, y2)
set(gca, 'xscale', log);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.10.2011, 16:38     Titel:
  Antworten mit Zitat      
Hallo clustering_n00b,

Ich verstehe nicht genau, welche X-Achse doppelt erscheint.
Code:
[AX, h1, h2] = plotyy(x1, y1, x1, y2)

Du hast die Handles beider AXES-Objekte in AX. Vielleicht möchtest Du bei einer der AXES die XTicks auf [] setzen?

Hilft "doc plotyy" weiter?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
clustering_n00b
Themenstarter

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 04.10.2011, 17:10     Titel:
  Antworten mit Zitat      
Ja, ich hab's jetzt selber herausgefunden.

Link

Code:
set(AX, 'xscale', 'log')


Hat endlich funktioniert!

Danke fuer deine Hilfe! Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.