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: 14.12.2009, 20:02     Titel:
  Antworten mit Zitat      
Mir hat gerade jemand erklärt wie man es macht:

%% Aufräumen
clear all; close all; clc;

%% Zwei Kurven anlegen und speichern
t=-2*pi:0.1:2*pi;
y1=sin(t);
y2=cos(t);

plot(t,y1,'rx-');
saveas(gcf,'Sinus.fig');
close all;

plot(t,y2,'bo-');
saveas(gcf,'Cosinus.fig');
close all;

%% Die gespeicherten Kurven laden und kombinieren
clear all; clc;
s=hgload('Sinus.fig');
c=hgload('Cosinus.fig');
figure; % in Subplots
h_1=subplot(2,1,1);
h_2=subplot(2,1,2);
copyobj(allchild(get(s,'CurrentAxes')),h_1);
copyobj(allchild(get(c,'CurrentAxes')),h_2);

figure; % in einem Plot
h_3=axes;
copyobj(allchild(get(s,'CurrentAxes')),h_3);
copyobj(allchild(get(c,'CurrentAxes')),h_3);


Einziges Problem hierbei ist noch, daß nur das rechte unter Panel aus beiden *.fig files kombiniert wird, aber das versuche ich jetzt noch hinzukriegen.

Vielen Dank für Eure Hilfe!!!!!


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, 20:29     Titel:
  Antworten mit Zitat      
Hallo,

die Rückfrage verstehe ich inhaltlich nicht. Bezieht sie sich überhaupt auf den darüber stehenden Beispielcode?

Bei meinem Vorschlag hätte man übrigens vermutlich nur noch Modifikationen einbauen müssen, um mit zwei Figures und (vermutlich) mehreren Koordinatensystemen / Linien zu arbeiten.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 21:08     Titel:
  Antworten mit Zitat      
Die Rückfrage war auf den obigen Post bezogen.

Mein Problem ist ehrlich gesagt, daß mir jegliche Grundlagen in Matlab, fehlen, daher fällt es mir schwer größere Modifikationen vorzunehmen.

Daher auch mein Problem bei dem von mir zuletzt geposteten Beispiel. Ich müsste dort irgendwie erreichen, dass er das ganze für alle 4 Panels durch führt (die *.fig-Dateien bestehe aus jeweils 4 Panels).

Zurzeit nimmt er nur den unteren rechten. Ich versuche gerade in der Klammer von Subplot andere Zahlen einzusetzen, dies hat leider keinen Effekt auf das Panel, das benutzt wird.

Bin für Vorschläge dankbar.
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 21:10     Titel:
  Antworten mit Zitat      
Also dazu mal kurz, der Code wie ich ihn jetzt verwendet habe (meine Dateien heißen Model1 und Model2):

%% Die gespeicherten Kurven laden und kombinieren
clear all; clc;
s=hgload('model1.fig');
c=hgload('model2.fig');
figure; % in Subplots
h_1=subplot(2,1,1);
h_2=subplot(2,1,2);
copyobj(allchild(get(s,'CurrentAxes')),h_1);
copyobj(allchild(get(c,'CurrentAxes')),h_2);

figure; % in einem Plot
h_3=axes;
copyobj(allchild(get(s,'CurrentAxes')),h_3);
copyobj(allchild(get(c,'CurrentAxes')),h_3);
 
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, 22:33     Titel:
  Antworten mit Zitat      
Hallo,

was verstehst du unter einer Panel? Verschiedene Bereiche (Subplots), oder etwas anderes? Falls letzteres, bitte mal einen Screenshot anhängen. Falls ersteres, dann liegt das Problem in diesen Befehlen:

Code:
copyobj(allchild(get(s,'CurrentAxes')),h_1);
copyobj(allchild(get(c,'CurrentAxes')),h_2);


Damit werden nur die Objekte im momentanen Koordinatensystem (deswegen CurrentAxes) erfasst.

Was soll denn letztlich eigentlich erreicht werden? Die Fragen jetzt haben ja mit denen am Anfang nicht sooo viel zu tun. Vor allem kommst du ja mit dem Code, der dir gegeben wurde, nicht an die Daten?

Es ist auch nicht unbedingt sinnvoll, gleich in der Mitte mit einer Programmiersprache anfangen. Vielleicht mal ein einführendes Skript durcharbeiten, oder eine Vorlesung oder einen Kurs besuchen?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 23:08     Titel:
  Antworten mit Zitat      
Mit Panel meinte ich die Supblots, sorry. Hab beide Figures angefügt .

Ziel ist es jeden einzelnen Subplot (es gibt 4) aus der ersten *.fig mit denen aus dem zweiten *.fig zu kombinieren, so daß ein neue figure datei mit 4 subplots entsteht, die die Graphen aus den vorigen *.fig Dateien darstellt.

Mit dem obigen Code, kann ich wie gesagt beide figure-Dateien öffnen (ich habe den Namen der files oben abkekürzt) und die darin enthaltenen subplots rechts unten miteinander kombinieren.

Ich stimme durchaus zu daß es nicht sehr sinnvoll ist mittendrin mit Matlab anzufangen. Ich arbeite in der Tat gerade eine Einführung in Matlab durch, nur sind meine Probleme in Matlab leider weiter als ich in dem Buch.

Danke nochmal für die Hilfe.

lin_model_b_ii_IRF_epsilon_a.fig
 Beschreibung:

Download
 Dateiname:  lin_model_b_ii_IRF_epsilon_a.fig
 Dateigröße:  11.12 KB
 Heruntergeladen:  566 mal
lin_model_b_i_IRF_epsilon_a.fig
 Beschreibung:

Download
 Dateiname:  lin_model_b_i_IRF_epsilon_a.fig
 Dateigröße:  11.13 KB
 Heruntergeladen:  579 mal
 
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, 23:33     Titel:
  Antworten mit Zitat      
Hallo,

probier das:

Code:
s=openfig('lin_model_b_i_IRF_epsilon_a.fig');
c=openfig('lin_model_b_ii_IRF_epsilon_a.fig');

f = figure;
set(get(s, 'Children'), 'Parent', f)

ax = get(f, 'Children');
ax_old = get(c, 'Children');
for I=1:4
    set(get(ax_old(I), 'Children'), 'Parent', ax(I));
end
close(c)
close(s)


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2009, 23:59     Titel:
  Antworten mit Zitat      
Dankeschön, das war genau was ich gemeint hatte.

Allerdings sehen die kombinierten Funktionen etwas anders aus, als in der Version die ich per Drag und Drop erreicht hatte (also die eine der beiden Funktionen verläuft jeweils ganz anders- man sieht es auch wenn man beide fig_files öffnent und mit Augenmaß vergleicht). Woran könnte das denn liegen?

Vielen, vielen Dank nochmal für die Mühe.
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2009, 00:03     Titel:
  Antworten mit Zitat      
Könnte es vielleicht daran liegen, dass die falschen subplots miteinander kombiniert wurden? Es sieht etwas danach aus so pi mal daumen.
 
Fontana

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2009, 02:34     Titel:
  Antworten mit Zitat      
Hab es gerade nochmal nachgeschaut, und das ist genau das Problem.

Subplot 11 aus fig1 is kombiniert mit Subplot 22 aus fig2
Subplot 12 aus fig1 is kombiniert mit Subplot 21 aus fig2
Subplot 21 aus fig1 is kombiniert mit Subplot 12 aus fig2
Subplot 22 aus fig1 is kombiniert mit Subplot 11 aus fig2

Kann man das irgendwie korrigieren? Also so dass 11 jeweils mit 11 kombiniert wird etc.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.12.2009, 09:55     Titel:
  Antworten mit Zitat      
In dem Fall wird es reichen, die Koordinatensysteme umzusortieren, d.h. die eine Zeile abändern in

Code:
ax_old = flipud(get(c, 'Children'));


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2009, 11:06     Titel:
  Antworten mit Zitat      
Perfekt, genau das war es. Jetzt sehen sie so aus wie sie sollen.


Vielen, vielen Dank nochmal für die schnelle Hilfe, Ich weiß es sehr zu schätzen!!!!!
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.