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

Mehrere Graphen mit 2 y-Achsen plotten

 

MJ1105

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2016, 12:13     Titel: Mehrere Graphen mit 2 y-Achsen plotten
  Antworten mit Zitat      
Hallo,

ich verzweifle gerade daran, mehrere Graphen in einem Fenster mit 2 y-Achsen darzustellen. Es sollen insgesamt 6 Graphen dargestellt werden. Einer der Graphen soll auf der ersten y-Achse dargestellt werden. Die anderen fünf sollen auf der 2. y-Achse dargestellt werden.

Der Code funktioniert soweit, allerdings werden die Graphen irgendwie miteinander verbunden.

Liegt es vielleicht daran, dass die 5 Graphen auf der y-Achse unterschiedlich viele Punkte haben?

Code:
x_Kuehlgeometrie1 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A4:A13')
y_Kuehlgeometrie1 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B4:B13')
x_Kuehlgeometrie2 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A15:A29')
y_Kuehlgeometrie2 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B15:B29')
x_Kuehlgeometrie3 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A32:A36')
y_Kuehlgeometrie3 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B32:B36')
x_Kuehlgeometrie4 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A39:A44')
y_Kuehlgeometrie4 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B39:B44')
x_Kuehlgeometrie5 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A46:A70')
y_Kuehlgeometrie5 = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B46:B70')

axes (handles.axes1)
plotyy (Hoehe, Waermeuebergangskoeffizient,[x_Kuehlgeometrie1;x_Kuehlgeometrie2;...
    x_Kuehlgeometrie3;x_Kuehlgeometrie4;x_Kuehlgeometrie5],...
    [y_Kuehlgeometrie1;y_Kuehlgeometrie2;y_Kuehlgeometrie3;...
    y_Kuehlgeometrie4;y_Kuehlgeometrie5]);
grid on;
 


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 16.03.2016, 12:46     Titel: Re: Mehrere Graphen mit 2 y-Achsen plotten
  Antworten mit Zitat      
Hallo MJ1105,

Zitat:
Code:
plot([x_Kuehlgeometrie1;x_Kuehlgeometrie2;...
    x_Kuehlgeometrie3;x_Kuehlgeometrie4;x_Kuehlgeometrie5],...
    [y_Kuehlgeometrie1;y_Kuehlgeometrie2;y_Kuehlgeometrie3;...
    y_Kuehlgeometrie4;y_Kuehlgeometrie5]);
grid on;
 

Wenn die X-Werte jeweils unterschiedliche Anzahlen von Y-Werten haben, müssen die einzelnen Variablen Spalten-Vektoren sein. Andernfalls sollte die Verknüpfung per [] mit einem Fehler scheitern.
Wenn dies so ist, wird durch den obigen Befehl (ich habe mal der Einfachheit halber ein plot statt des plotyy genommen) ein einziger langer Spalten-Vektor erzeugt und geplottet - selbstverständlich mit Verbindung zwischen den Werten, denn es ist ja ein einziger Vektor.

Du möchtest aber 5 unterschiedliche Diagramme anzeigen lassen. Also benötigst Du die Outputs von plotyy um den zweiten AXES-Handle zu bekommen. Dann kannst Du in einer FOR-Schleife die einzelnen Diagramme erzeugen mit plot(x, y, 'Parent', Axes2Handle);
Dafür ist es nützlich, wenn die Variablen nicht "...1" heißen, sondern Du sie in einem Array speicherst: "...{1}". Dann ist der Zugriff in einer Schleife einfach.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
MJ1105
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 16.03.16
Wohnort: ---
Version: R2015a
     Beitrag Verfasst am: 16.03.2016, 14:03     Titel:
  Antworten mit Zitat      
Hallo Jan S,

danke für deine schnelle Antwort.
Den Fehler mit dem einzigen langen Vektor habe ich nun verstanden.
Des Weiteren habe ich nun ein cell-Array erstellt, um mittels einer for-Schleife einfach plotten zu können. Habe meinen Code daraufhin wie folgt verändert:

Code:

x_Kuehlgeometrie{1} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A4:A13')
y_Kuehlgeometrie{1} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B4:B13')
x_Kuehlgeometrie{2} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A15:A29')
y_Kuehlgeometrie{2} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B15:B29')
x_Kuehlgeometrie{3} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A32:A36')
y_Kuehlgeometrie{3} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B32:B36')
x_Kuehlgeometrie{4} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A39:A44')
y_Kuehlgeometrie{4} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B39:B44')
x_Kuehlgeometrie{5} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','A46:A70')
y_Kuehlgeometrie{5} = xlsread('ABV1,72-Referenz-m950-h82_Tm195°C.xlsx',...
    'Kühlführung','B46:B70')

axes (handles.axes1)
[AX,H1,H2] = plotyy (Hoehe, Waermeuebergangskoeffizient,x_Kuehlgeometrie{1},...
    y_Kuehlgeometrie{1});
grid on;
hold on;

for (n=2:1:5)
    axes (handles.axes1);
    plot (x_Kuehlgeometrie{n}, y_Kuehlgeometrie{n},'Parent', H2);
    hold on
end
hold off;


Ich denke mal, dass ich dich irgendwie falsch verstanden habe, denn folgende Fehlermeldung gibt Matlab zurück:

Error using plot
Line cannot be a child of Line.

Danke schonmal im Voraus.

Gruß MJ1105
Private Nachricht senden Benutzer-Profile anzeigen
 
MJ1105
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 16.03.16
Wohnort: ---
Version: R2015a
     Beitrag Verfasst am: 18.03.2016, 10:28     Titel:
  Antworten mit Zitat      
Bzw. kennt jemand anders die Lösung oder sieht meinen Fehler im Code.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.03.2016, 12:27     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung sagt doch klar, wo das Problem ist.
Das Parent einer Line muss ein Axes sein, also bei dir ax(1) oder ax(2) .

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
mirimoc
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2016, 23:57     Titel: Plotyy: Wo ist ax(2) hin?
  Antworten mit Zitat      
Hallo,

ich hoffe man kann mir auch bei meinem Problem helfen. Habe ein ähnliches Problem und habe mich an die Tipps von hier gehalten, doch kommt bei mir eine Fehlermeldung.

Hier ein Minimalbeispiel:
Code:

t1  = 1:10;
t2  = 2:12;      
q1  = t1;
q2  = t2;
p1  = -t1*2;
p2  = -t2./2;

[ax, h1 ,h2] =  plotyy(t1, q1, t1, p1);    
hold on
plot(t2,p2,'Parent',ax(2))
hold off
 


Bei mir kommt die Fehlermeldung:
'Cannot set property to a deleted object'

Doch weiß ich nicht wann ich ax(2) gelöscht haben soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
mirimoc
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 19.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2016, 00:00     Titel:
  Antworten mit Zitat      
Habe ein wenig probiert und ich weiß zwar nicht wieso, aber
Code:

hold(ax(2),'on')
 

hat das Problem gelöst.

Ich dachte, dass
Code:

alles mitnimmt.
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 - 2024 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.