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

Plot an definierter Position mit definierter Größe in GUI

 

robert91
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 26.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2016, 00:02     Titel: Plot an definierter Position mit definierter Größe in GUI
  Antworten mit Zitat      
Servus miteinander,

ich hänge seid geraumer Zeit an einem kleinen Problem, dass ich einfach nicht gelöst bekomme. Habe auch schon mehrere Beiträge in Foren und sonstigen Suchmaschinen durchgekämmt.

Ich versuche mal, das Problem kurz zu beschreiben (ohne Minimalbeispiel, könnte ich aber demnächst gerne zur Verfügung stellen, sofern es benötigt wird).

Folgendes:

Ich habe mir eine GUI erstellt mit einem Achsensystem (Axis). Die GUI habe ich im guide erstellt. Jetzt lasse ich mir in dieses Achsensystem unterschiedliche Daten plotten (plot3). Wenn ich nun mit der Pan bzw. Zoom Funktion mir einzelne Details anschauen möchte, wandert das Achsensystem samt den darin dargestellten Daten hinter die Bedienelemente der GUI, es hat also keinen fest definierten Platz darin. Kann man das in irgendeiner Art und Weise unterbinden? Hat jemand eine Idee?

Grüße
Robert
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.10.2016, 10:40     Titel: Re: Plot an definierter Position mit definierter Größe in
  Antworten mit Zitat      
Hallo robert91,

Zoom und Pan sollten eigentlich nur die Inhalte des AXES (mit "e", AXIS ist etwas anderes) verschieben. Wenn bei Dir das AXES-Objekt selbst verschoben wird, läuft etwas schief. Ein Minimal-Beispiel wäre nötig, um zu sehen, was da genau passiert.

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 26.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2016, 11:04     Titel:
  Antworten mit Zitat      
Servus Jan,

habe ein kleines Minimalbeispiel geschrieben, ist zwar nicht sehr schön, beschreibt aber sehr gut, welches Problemchen ich habe.

Wenn du die figure öffnest, dann siehst du, dass das Axes-Fenster einen bestimmten Bereich hat. Und genau in diesem soll es sich immer bewegen. das vis3d fand ich auch recht schön, da man keinen Verzug reinbekommt.

Wenn du nun das Minimalbsp.m ausführst und in der GUI auf den Button drückst, werden Random irgendwelche Koordinaten geplottet. Nun kannst du (in der Toolbar der GUI) "Pan" auswählen und das komplette Achsensystem hinter die Buttons ziehen, und das möchte ich verhindern.

Gruß
Robert

Edit:
Jap, meinte auch AXES, rufe in meinem Programm das ganze mit axes(handles.axesname) auf

Minimalbsp.rar
 Beschreibung:

Download
 Dateiname:  Minimalbsp.rar
 Dateigröße:  32.58 KB
 Heruntergeladen:  343 mal
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.10.2016, 12:36     Titel:
  Antworten mit Zitat      
Hallo robert91,

Zitat:
Wenn du die figure öffnest, dann siehst du, dass das Axes-Fenster einen bestimmten Bereich hat. Und genau in diesem soll es sich immer bewegen.

Ich kann Dein FIG-File nicht öffnen, weil ich eine ältere Matlab-Version verwende. Darum verstehe ich nicht, was dieser Satz bedeutet.

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 26.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2016, 13:02     Titel:
  Antworten mit Zitat      
Servus Jan,

okay, ich hab jetzt mal ein paar Screenshots gemacht, ich hoffe, ich kann das anhand deren erklären. Den kompletten Code hänge ich mit rein, vielleicht kannst du damit was anfangen.

minimalbsp_guide zeigt das Fenster, wie ich die BeispielGUI erstellt habe. Darin ist ein Static Text, ein Axes und ein Button zu sehen.

Wenn ich das Programm minimalbsp.m starte, siehst du die GUI wie in minimalbsp_gui_1. Dort ist aktuell noch ein zweiachsiges Koordinatensystem zu stehen.

Drücke ich nun auf den Button, werden Punkte eingezeichnet (Vgl. minimalbsp_gui_2).

Möchte ich nun Zoomen oder den inhalt des Graphen verschieben (beides über die Button in der Toolbar) verschiebt sich das komplette Achsensystem (siehe minimalbsp_gui_3).

Was ich nun erreichen möchte ist, dass immer das gesamte Feld (vgl. minimalbsp_guide, axes1) ausgefüllt ist und auch immer an genau dieser Stelle wird. Das heißt, dass ich den kompletten Inhalt einfach nach oben verschieben möchte, ähnlich wie bei einem CAD Programm. Sofern das nicht machbar ist, wäre es sehr hilfreich, dass es sich dennoch nicht aus dem Fenster (minimalbsp_guide, axes1) "herausschieben" lässt, das Achsensystem soll also immer an dieser Stelle bleiben.

Ich hoffe, ich konnte das einigermaßen gut beschreiben.

Hier noch das Programm:

Code:
function varargout = minimalbsp(varargin)

gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @minimalbsp_OpeningFcn, ...
                   'gui_OutputFcn',  @minimalbsp_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end

function minimalbsp_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

function varargout = minimalbsp_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
   
i = 1;
az = -37.5;
el = 30;


data = -5 + (5+5)*rand(10,3);

axis vis3d;

if i == 1
    view(az, el);      
    zoom on;            
    rotate3d on;        
    grid on;
    hold on;
    xlabel('x-axis, length [mm]');
    ylabel('y-axis, width [mm]');
    zlabel('z-axis, height [mm]');
end

plot3(0, 0, 0, '*','LineWidth',1,'Color', [1 0 0],'MarkerSize', 15); % Nullpunktdarstellung

for i=1:1:size(data,1)
    plot3(data(i,1), ...
        data(i,2), ...
        data(i,3), ...
    '.', ...
    'LineWidth',1, ...
    'Color', [0 0 0], ...
    'MarkerSize', 25);
end
 


Aus diesem Code sind fast alle Kommentare entfernt.

Gruß
Robert

minimalbsp_gui_3.JPG
 Beschreibung:

Download
 Dateiname:  minimalbsp_gui_3.JPG
 Dateigröße:  30.17 KB
 Heruntergeladen:  360 mal
minimalbsp_gui_2.JPG
 Beschreibung:

Download
 Dateiname:  minimalbsp_gui_2.JPG
 Dateigröße:  39.24 KB
 Heruntergeladen:  365 mal
minimalbsp_gui_1.JPG
 Beschreibung:

Download
 Dateiname:  minimalbsp_gui_1.JPG
 Dateigröße:  26.97 KB
 Heruntergeladen:  367 mal
minimalbsp_guide.JPG
 Beschreibung:

Download
 Dateiname:  minimalbsp_guide.JPG
 Dateigröße:  68.99 KB
 Heruntergeladen:  412 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
robert91
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 26.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2016, 12:09     Titel:
  Antworten mit Zitat      
hat niemand eine Lösung?
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: 03.11.2016, 23:04     Titel:
  Antworten mit Zitat      
Hallo robert91,

Zitat:
Möchte ich nun Zoomen oder den inhalt des Graphen verschieben (beides über die Button in der Toolbar) verschiebt sich das komplette Achsensystem (siehe minimalbsp_gui_3).

Das ist die Definition von Zoomen. Bis hier hin ist also alles so, wioe gewünscht, richtig?

Zitat:
Was ich nun erreichen möchte ist, dass immer das gesamte Feld (vgl. minimalbsp_guide, axes1) ausgefüllt ist und auch immer an genau dieser Stelle wird.

Das verstehe ich noch nicht. Welches Feld soll wovon ausgefüllt sein?

Zitat:
Das heißt, dass ich den kompletten Inhalt einfach nach oben verschieben möchte, ähnlich wie bei einem CAD Programm.

Welchen Inhalt? Soll das Koordinaten-Kreuz an der gleichen Stelle bleiben und Du verschiebst nur die Punkte? Dann würden sich nur die Achsen-Beschriftungen ändern?

Das Herausschieben des AXES sieht unpraktisch aus. Dann ist PAN wohl die falsche Methode.

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 26.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2016, 12:04     Titel:
  Antworten mit Zitat      
Servus Jan S,

Zitat:
Welchen Inhalt? Soll das Koordinaten-Kreuz an der gleichen Stelle bleiben und Du verschiebst nur die Punkte? Dann würden sich nur die Achsen-Beschriftungen ändern?


genau so.

Zitat:
Das verstehe ich noch nicht. Welches Feld soll wovon ausgefüllt sein?


Das axes welches ich in der GUI erstellt habe.

Gruß
Robert
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.