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

Subplot in uipanel axes

 

Heimatloser
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2010, 08:42     Titel: Subplot in uipanel axes
  Antworten mit Zitat      
Hallo,

ich hab mit GUIDE eine Gui erstellt, mit ein paar Eingabefeldern und einen paar Knöpfen (ist ja egal) und einer Zeichenoberfläche.

jetzt habe ich ein Skript, das, je nach Eingabedaten, eine Figure mit 2 Subplots aufmacht. Was ich will ist, das diese zwei Subplot an dem durch das handles.axes1 vordefinierten Platz auf der GUI erscheinen. Wie mache ich das?

Ich habe mich mit einem Workaround begnügt, indem ich die GUI in 3 Subplots aufteile, meine Eingabedaten im ersten habe und in den zweiten und dritten direkt plotte, ohne überhaupt eine Axes zu haben. Aber das ist leider sehr sehr sehr sehr sehr unschön.

Wollt ihr mir helfen?

MfG,
Heimatloser
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 20.05.2010, 12:11     Titel:
  Antworten mit Zitat      
Um das zu realisieren musst Du beim Aufruf der Befehlen SUBPLOT den "Parent" Parameter übergeben.

Der Bereich in der GUI, der diese SUBPLOT's aufnehmen soll musst Du nicht mit der Axes "reservieren", sondern mit der UIPANEL. Und den handle von dem UIPANEL übergibst Du als "Parent"-Parameter beim Aufruf von SUBPLOT

zB:
Code:
subplot(2,2,1,'Parent',h)


noch ein kleiner Beispiel:
Code:
h = uipanel('position',[.1 .1 .6 .6],'units','normalized');
subplot(2,2,1,'parent',h)
subplot(2,2,2,'parent',h)
 



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Heimatloser
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2010, 12:32     Titel:
  Antworten mit Zitat      
Vielen Dank für die Hilfe, werde von da an weiterarbeiten.
Leider glaube ich nicht daran dass ich sehr weit kommen werde, da die plots in einem extra skript geschehen, ich also keinerlei übergabe Parameter einbauen kann, und den Code nur geringfügig verändern kann.

Den Code in dem geplottet wird zu kopieren ist keine Option.

Ich kann mit gcf im Skript zwar das Fenster (gut genug) bestimmen in das geplottet werden soll, aber mehr auch nicht.

vielleicht funktioniert ja etwas im stile von "get(gcf.Children.uipanel)" aber wie genau der Befehl heißen müsste weis ich nicht.

Kannst du mir nochmal helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 20.05.2010, 12:58     Titel:
  Antworten mit Zitat      
Ich hätte zwar lieber den Script angepasst, weil es eleganter ist, aber Du musst wissen, wie Du das umsetzen willst...

also wenn Du den Handle vom Figure (zB. hFig) hast, kannst schon die Axes (Subplot) darin bestimmen:
Code:
sub_kids = findobj(hFig,'Type','axes')

Nun müsstest Du die Parent Eigenschaft von diesen Subplots gegen den Handle der UIPANEL (aus Deiner GUI) ersetzen.
Code:
set(sub_kids,'parent',*handle_von_UIPANEL*)

Jetzt kannst Du das leer stehendes Figure löschen.
Code:



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Heimatloser
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2010, 13:01     Titel:
  Antworten mit Zitat      
Hi,

vielen Dank, das funktioniert alles sehr gut.
ich habe beide Lösungen zum laufen gebracht, und werde mich für die zweite entscheiden (das "klauen" der bilder aus dem alten Plot).

Leider habe ich schon wieder ein Problem:
der obere Subplot sprengt den Platzrahmen. aber nicht im ursprünglichen Plot, sondern nur im UIPANEL nach dem ich es geklaut habe. (Die weiße Box passt vom Platz, aber der Plot darin läuft weiter nach rechts bis über den Fensterrand)

Woran liegt das? schätzt der erste Plot den Platzbedarf falsch ein? Sollte ich das per hand ändern? ich arbeite mit units normalized, falls das wichtig ist.

Vielen Dank nochmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Heimatloser
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2010, 13:29     Titel:
  Antworten mit Zitat      
alles klar, thread beendet.
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.