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

Darstellen von mehreren Graphen in einem Plot

 

Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 01:30     Titel: Darstellen von mehreren Graphen in einem Plot
  Antworten mit Zitat      
Hallo Zusammen,

ich versuche gerade mehrere Graphen in einem Plot zu kombinieren.

Meine Graphen basieren auf 2 verschiedenen Berechnungen (erstellt mit Dynare, Subprogramm von Matlab), die ich auf diese Weise miteinander vergleichen möchte, wobei jede Berechnung jeweils 4 Panels mit den jeweiligen Graphen enthält. Diese sollen jetzt miteinander kombiniert werden.

Also aus zwei mal 4 panels mit jeweils einem Graphen sollen einmal 4 panels mit jeweils 2 Graphen werden.

Die Resultate meiner Berechnung befinden sich in den beiden Dateien (sind angehängt):
lin_model_b_i_IRF_epsilon_a.fig
lin_model_b_ii_IRF_epsilon_a.fig

Ich habe mit subplot und plot mein Glück versucht kam aber hier nicht so recht weiter, weil ich mir nicht ganz darüber im Klaren bin wie ich die Optionen setzen muss.

Vielen Dank
Fontana

lin_model_b_i_IRF_epsilon_a.fig
 Beschreibung:

Download
 Dateiname:  lin_model_b_i_IRF_epsilon_a.fig
 Dateigröße:  11.11 KB
 Heruntergeladen:  966 mal
lin_model_b_ii_IRF_epsilon_a.fig
 Beschreibung:

Download
 Dateiname:  lin_model_b_ii_IRF_epsilon_a.fig
 Dateigröße:  11.13 KB
 Heruntergeladen:  690 mal


Madcat
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 03.04.08
Wohnort: Düsseldorf
Version: 2008b Student
     Beitrag Verfasst am: 10.12.2009, 12:19     Titel:
  Antworten mit Zitat      
Wie hast du es den probiert die Plots ineinander zu bekommen?

Eigentlich ist das recht einfach:

Code:

figure;
hold on;
plot(x-werte1, y-werte1);
plot(x-werte2, y-werte2);
hold off;
 


Und bei Subplots geht man genauso vor.

Code:

figure;
subplot(2,1,1);
hold on;
plot(x-werte1, y-werte1);
plot(x-werte2, y-werte2);
hold off;
subplot(2,2,2);
hold on;
plot(x-werte3, y-werte3);
plot(x-werte4, y-werte4);
hold off;
 


Wo genau liegt das Problem, also was funktioniert nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 12:23     Titel:
  Antworten mit Zitat      
Das sieht ja schonmal sehr gut (bzw. einfach) aus.

Wie aber erreiche ich, daß matlab die Graphen aus den beiden Dateien zieht?
 
Madcat
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 03.04.08
Wohnort: Düsseldorf
Version: 2008b Student
     Beitrag Verfasst am: 10.12.2009, 13:01     Titel:
  Antworten mit Zitat      
Indem man die Werte z.B. ins Workspace einliest. In welchen Dateien liegen denn die Daten vor? Einfach Textdateien oder in Exceldateien oder in was anderem?
Private Nachricht senden Benutzer-Profile anzeigen
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 13:04     Titel:
  Antworten mit Zitat      
Die Dateien liegen als *.fig Dateien vor. Also einmal:

model1.fig und model2.fig.

Ich habe versucht einfach folgenden Befehl zu benutzen:

figure('model1.fig')

bekam aber die Fehlermeldung:
??? Error using ==> figure
Single input must be an existing figure handle or a scalar integer from 1 to 2030832096

Ich war im richtigen Verzeichnis, also daran kann es nicht liegen.
 
Madcat
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 03.04.08
Wohnort: Düsseldorf
Version: 2008b Student
     Beitrag Verfasst am: 10.12.2009, 13:14     Titel:
  Antworten mit Zitat      
fig-files öffnet man mit

Code:

openfig('filename.fig');
 


Ich müsste nun selbst durch die Hilfe blättern um zu schaun ob man an die Datensätze innerhalb ran kommt bzw. wie. In einem fig-File werden ja u.a. das Layout der Figure gespeichert, also wo welche Zeichnung/Button/Achse/usw ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 13:17     Titel:
  Antworten mit Zitat      
Ja so hat es geklappt danke, ich probiere mal etwas mit plot und suplot rum, vielleicht bekomme ich es damit hin.

Weißt Du denn ob man es auch einfach mithilfe der tool plots machen kann. Dann würde ich es zur Not per Hand machen, wäre mir auch schon recht.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.12.2009, 13:30     Titel:
  Antworten mit Zitat      
Hallo,

über die Figure bzw. ihr Handle kann ich über die Eigenschaft Children Handles auf die Koordinatensysteme bekommen. Über diese und die Eigenschaft Children kann ich wiederum Handles auf die Plots bekommen. Dann kann man mit Hilfe der Eigenschaften Xdata und Ydata die Daten zurückholen. Einfaches Beispiel:

Code:
plot(-5:5, (-5:5).^2)
f = gcf;
a = get(f, 'Children')
p = get(a, 'Children')
x = get(p, 'Xdata')
y = get(p, 'Ydata')


Im vorliegenden Beispiel wird es etwas komplizierter, da die Figures aus mehreren Koordinatensystemen / Linien bestehen, aber das sollte dann auch noch hinzubekommen sein.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Madcat
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 03.04.08
Wohnort: Düsseldorf
Version: 2008b Student
     Beitrag Verfasst am: 10.12.2009, 13:35     Titel:
  Antworten mit Zitat      
Also ich habs jetzt auf die Schnelle nicht rausbekommen wie man es automatisch machen kann aber von Hand ist es recht "leicht" an die Daten zu kommen:

1. Öffne das Fig-File
2. Wähle das Menü "Tools"
3. Wähle den Eintrag "Edit Plots"
4. Doppelklicke die Kurve an, die dich interessiert
5. Unten rechts gibts nun den Button "More Properties ..."
6. Darunter findet sich u.a. das "Property" XData und YData, welches die gewünschten Daten enthält Wink

Sicherlich kann man auch über ein Handle an diese Daten kommen, Edit Plots macht ja quasi nix anderes als über Handles auf die verschiedenen Plots zuzugreifen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 13:39     Titel:
  Antworten mit Zitat      
Habe es gerade mit plot-tools per drag un drop gemacht (hab da ehrlich gesagt nicht mal dran gedacht vorher)!

Falls du trotzdem noch drauf kommst, wie ich es mit Code machen kann, wäre super.

Vielen Dank nochmal für Deine Hilfe.
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2009, 13:40     Titel:
  Antworten mit Zitat      
Hab eure Einträge gerade übersehen, ich probier es aus.
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 12:51     Titel:
  Antworten mit Zitat      
Hallo Harald,

wo genau müsste ich denn in deinem Beispiel, den Namen meiner *.fig Datei angeben? Damit er diese zieht?

Ich kann meinen Fall auch vereinfachen, so daß in der Figure File nur noch ein Diagram enthalten ist, daran soll es nicht scheitern.

Danke,
Fontana
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 13:25     Titel:
  Antworten mit Zitat      
Könnte es sein, dass ich stattdessen copyobj benutzen müsste?

Falls ja, wie würde ich denn da erreichen, daß ich ich mein *.fig objekt öffne?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2009, 13:57     Titel:
  Antworten mit Zitat      
Hallo,

das Öffnen der Figure passiert wie von Madcat vorgeschlagen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 14:52     Titel:
  Antworten mit Zitat      
Ok, ich habe jetzt folgendes probiert:
Code:
%
openfig('lin_model_b_i_IRF_epsilon_a.fig')
openfig('lin_model_b_ii_IRF_epsilon_a.fig')
plot(-5:5, (-5:5).^2)
f = gcf;
a = get(f, 'Children')
p = get(a, 'Children')
x = get(p, 'Xdata')
y = get(p, 'Ydata')
 


wobei der Graph rechts unten in der zweiten Datei durch eine Parabeler ersetzt wurde, und diese Fehlermeldung erscheint:

??? Error using ==> get
Conversion to double from cell is not possible.

Error in ==> Combine_Plots at 7
x = get(p, 'Xdata')

In beiden Dateien sind wie gesagt wie Plots enthalten, die ich miteinander kombinieren möchte.
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.