Verfasst am: 04.08.2015, 10:56
Titel: Plot im falschen Fenster (handles.axes?)
Hallo,
ich habe ein Problem den Plot in den richtigen Fenster anzuzeigen. In meiner GUI habe ich zwei achsen (axes1 und axes2). axes2 habe ich mit "axes(handles.axes2)" belegen können. In axes1 würd ich nun gerne meine Grafik anzeigen lassen. Der plot erscheint aber trotzdem immer im anderen Fenster (axes2), dass eigentlich schon belegt ist. Kann mir jemand weiterhelfen?
Code:
% --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider
bin zwar kein Profi aber ich werde es mal probieren.
Es sieht so aus als wenn du eine genaue Zuweisung der plots bräuchtest.
Vorrausgesetzt du hast die axes vorher definiert.
Hier mal ein kleines Beispiel mit Definition der axes und die Zuweisung der plots zum gewünschten axes.
Aber ich arbeite gerne mit uitabgroups. Da kann man beliebig viele axes darstellen und muss auch nicht auf Größe verzichten.
Probier mal diesen Code aus. Etwas gewöhnungsbedürftig aber ganz nützlich.
Code:
function gui_doppel_plot_uitab
f=figure;
tabui=uitabgroup('v0','parent',f); % uitabgroup erzeugen
a=1:50;
b=sin(a);
t=[];
at=[];
t(1) = uitab('v0',tabui, 'title', '1. Plot'); % einzelnes uitab in der uitabgroup erzeugen
at(1) = axes('parent', t(1),'Position',[.1 .1 .8 .8]); % axes im uitab erzeugen
plot(at(1),a,b,'Color','b'); %plotten mit Zuweisung des plots
t(2)=uitab('v0',tabui, 'title', '2. Plot'); % nächstes uitab in der uitabgroup erzeugen
at(2) = axes('parent', t(2),'Position',[.1 .1 .8 .8]); % axes im uitab erzeugen
plot(at(2),a,sin(b),'Color','r'); %plotten mit Zuweisung des plots
deine erster Tipp funktioniert leider nicht, den hab ich auch schon ausprobiert. Soweit ich das unter der Hilfe verstanden habe gibt es "höhere" plot Befehle bei denen diese Art der Zuweisung nicht mehr funktioniert.
Deinen zweiten muss ich mir erstmal anschauen und durchgehen. Mit uitapgroups kenn ich mich leider überhaupt nicht aus. Ich guck mal, vielleicht krieg ich es damit hin
eine idee wäre auch sich mal die pdeplot.m anzugucken. vieleicht kann man die ja so zurechtbiegen das man ein axeshandle übergeben kann.
grüße
_________________
huhu im interesse anderer leser wäre es hilfreich wenn du noch kurz genau schreibst was du geändert hast bzw was du gemacht hast.
grüße
_________________
ja natürlich. Anstatt pdegplot(..) aufzurufen habe ich in meiner callback Funktion nun pdeplot(..) aufgerufen und den axes handle einfach davor geschrieben.
Code:
function slider1_Callback(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider
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
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.