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

Komplexeren Plot in GUI einbinden

 

Shin
Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 27.09.2010, 13:51     Titel: Komplexeren Plot in GUI einbinden
  Antworten mit Zitat      
Hallo Leute,
ich hab einen komplexeren Plot mit mehreren Befehlen (á la hfill)
Den möchte ich jetzt gerne in ein GUI einbinden, wohl in ein axes-Feld.

Wie man generell Dinge plottet ist mir klar, nur wie mach ich das mit mehreren Objekten, beispielsweise mehreren hfill Befehlen.
Ich poste mal ein Teil des Codes, kann mir wer einen Tipp geben?
Muss man im figure Befehl am Anfang schon festlegen, wohin geplottet werden soll?


Der Anfang:
Code:
xl = 29.7;     %Längswert des Papiers
yl = 21;

hfig = figure('Tag', 'nichtWichtig', ...
        'PaperUnits','centimeters', ...
        'Name','Schlauchgeometrie',...
        'PaperOrientation','landscape',...
        'PaperPosition',[0.6345 0.6345 28 20.],...
        'PaperType','A4');
        set(hfig,'NumberTitle','off');
        set(hfig,'Position',[80 80 1100 0.75*1100]);
        set(hfig,'Color',[255/255, 255/255, 220/255]);


Und hier was geplottet wird:


Code:
%% Axes Element Nr 1
axLimit = [2/xl 3/yl 16/xl 11.2/yl];
hax(2) = axes('Units','normalized','Position',axLimit,'Parent',hfig);

% Bestimmung Minima und Maxima für Plot und Skalierung
xmin        = floor(min(x_ow.*-hs));
xmax        = ceil(max(x_uw.*hs))+1.0;
deltax      = xmax-xmin;
ymax        = deltax*11.2/16;

% Wasserfläche
hfill(1) = fill([xmin 0 0 xmin],[0 0 h1*hs h1*hs],[179 199 255]./255);
hold on;
hfill(2) = fill([0 xmax xmax 0],[0 0 h2*hs h2*hs],[179 199 255]./255);

% Wasserstände
hline(1) = line('Parent', hax(2), 'Tag', 'OW', ...
             'XData', [xmin 0], 'YData', [h1*hs h1*hs], ...
             'LineWidth',1.5, 'Color', 'b','Marker','none',...
             'DisplayName',num2str(h1*hs));
hline(2) = line('Parent', hax(2), 'Tag', 'UW', ...
             'XData', [xu*hs xmax], 'YData', [h2*hs h2*hs], ...
             'LineWidth',1.5, 'Color', 'b','Marker','none',...
             'DisplayName',num2str(h2*hs));
         
% Schlauchquerschnitt (Fläche)
hfill(3) = fill([0; x_ow.*-hs],[0; y_mod.*hs],[212 208 204]./255);
hfill(4) = fill([0; x_uw.*hs],[0; y_mod.*hs'],[212 208 204]./255);

% Schlauchquerschnitt (Linie)
hline(3) = line('Parent', hax(2), 'Tag', 'Membran OW', ...
             'XData', x_ow.*-hs, 'YData',y_mod.*hs, ...
             'LineWidth',2, 'Color', [0 0 0],'Marker','none',...
             'DisplayName','Membran OW');
hline(4) = line('Parent', hax(2), 'Tag', 'Membran UW', ...
             'XData', x_uw.*hs, 'YData',y_mod.*hs, ...
             'LineWidth',2, 'Color', [0 0 0],'Marker','none',...
             'DisplayName','Membran UW');

% Schlauchquerschnitt (Linie)
set(hfill(1:4),'EdgeColor','none')

% Befestigungsschienen
hline(5) = line('Parent', hax(2), 'Tag', 'Kontakt', ...
             'XData', [x_ow(end)*-hs+lb0 x_uw(end)*hs], 'YData',[0 0], ...
             'LineWidth',2, 'Color', [0 0 0],'Marker','none',...
             'DisplayName','Kontakt');
hline(6) = line('Parent', hax(2), 'Tag', 'Klemmschiene', ...
             'XData', [x_ow(end)*-hs x_ow(end)*-hs+lb0], 'YData',[0 0], ...
             'LineStyle','none', 'Marker','o','MarkerSize',10,...
             'MarkerEdgeColor','k','MarkerFaceColor',[150 150 150]./255, ...
             'LineWidth',2,'DisplayName','lb0');


Gruß und Dank
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: 27.09.2010, 14:39     Titel: Re: Komplexeren Plot in GUI einbinden
  Antworten mit Zitat      
Hallo Shin,

Zitat:
Wie man generell Dinge plottet ist mir klar, nur wie mach ich das mit mehreren Objekten, beispielsweise mehreren hfill Befehlen.
Code:

axLimit = [2/xl 3/yl 16/xl 11.2/yl];
hax(2) = axes('Units','normalized','Position',axLimit,'Parent',hfig);

% Bestimmung Minima und Maxima für Plot und Skalierung
xmin        = floor(min(x_ow.*-hs));
xmax        = ceil(max(x_uw.*hs))+1.0;
deltax      = xmax-xmin;
ymax        = deltax*11.2/16;

% Wasserfläche
hfill(1) = fill([xmin 0 0 xmin],[0 0 h1*hs h1*hs],[179 199 255]./255);
hold on;
hfill(2) = fill([0 xmax xmax 0],[0 0 h2*hs h2*hs],[179 199 255]./255);
 

Du fragst, wie man mehrere Objekte zeichnet. In Deinem Code wird das aber bereits gemacht. Wo ist nun genau das Problem?

Verschwinden vielleicht die alten Objekte, wenn neue gezeichnet werden? Dann wäre "hold('on')" bestimmt hilfreich. Oder Du könntest die AXES erzeugen mit 'NextPlot', 'add'.
Wenn irgendetwas anderes nicht so läuft, wie du gerne hättest, beschreibe das doch mal.

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

Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 27.09.2010, 14:46     Titel:
  Antworten mit Zitat      
Okay, das war vielleicht etwas schwach ausgedrückt von mir.
Ich habe einen existierenden Plot bzw Figure und möchte alles nun einem axes Objekt in einem GUI darstellen.

Das ist mir nun auch mit den hline Objekten mit der Änderung des Parent Eintrags zu "handles.axes1" gelungen.

Nur wie ich das mit den Fill Befehlen mache ist mir noch nicht ganz klar.
Hat da wer eine Idee?
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: 27.09.2010, 18:33     Titel:
  Antworten mit Zitat      
Hallo Shin,

Du kannst doch den Parent beim Kommando FILL auch angeben.

Kannst Du bitte einfach mal zeigen, was Du versuchst hast und schildern, was wo nicht fnktioniert?

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

Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 28.09.2010, 09:29     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo Shin,

Du kannst doch den Parent beim Kommando FILL auch angeben.

Kannst Du bitte einfach mal zeigen, was Du versuchst hast und schildern, was wo nicht fnktioniert?

Gruß, Jan


Mittlerweile ist es einfach nur die Unwissenheit, wo man den Parent im Fill Befehl unterbringt - entweder ich hab was übersehen oder unwissentlich falsch gemacht, jedenfalls hat's bei mir nicht funktioniert.

und

Wie man den Inhalt von nem axes-objekt in GUI löscht.
In meinem GUI soll man auf Knopfdruck Daten verändern können und mit den neu veränderten Daten der leicht veränderte Plot gezeichnet werden. Das geht auch, nur dass der alte Plot noch dargestellt wird.
Gibt es einen clear Befehl den man nur auf auf Objekt (hier, handles.axes1) anwendet?

Code:

Edit: cla(handles.axes1);
Private Nachricht senden Benutzer-Profile anzeigen
 
Shin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 28.09.2010, 13:37     Titel:
  Antworten mit Zitat      
Okay +.~
habs hinbekommen.
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.