2016-06-16 21 views
1

Ich habe eine einfache GUI mit zwei Drucktasten. Einer von ihnen plant einen einzelnen Plot, einer plottet zwei Subplots. Sobald ich jedoch die Subplot-Option aktiviere, kann ich nicht mehr zum einzelnen Plot zurückkehren. Ich bekomme einen '' Fehler mit Achsen, ungültigen Objektgriff ''. siehe unten mein sehr einfaches Beispiel:Matlab GUI, wie man von Subplot zu einer einzigen Handlung zurückgeht?

function plot_push1_Callback(hObject, eventdata, handles) 
load('test.mat') 
axes(handles.axes1) 
cla(handles.axes1,'reset') 
plot(x,x.^(n+1)); 

function push_plot2_Callback(hObject, eventdata, handles) 
load('test.mat') 
axes(handles.axes1) 
cla(handles.axes1,'reset') 
subplot(2,1,1); 
plot(x,x.^(0)); 
subplot(2,1,2); 
plot(x,x); 
+0

Ich habe noch keine GUI entwickelt, aber könnte 'subplot (1,1,1)' funktionieren? – Steve

+0

Ich habe das versucht, hat nicht funktioniert :( – Agnieszka

+0

Sie können ['clf'] versuchen (http://www.mathworks.com/help/matlab/ref/clf.html). –

Antwort

2

Das hier Hauptproblem ist, dass subplotein neues schafft axes Objekt (oder transformiert die aktuellen Achsen). Sie müssen dies berücksichtigen, wenn Sie Ihre axes Objekte manipulieren.

axes(handles.axes1);  

subplot(2,1,1);    % This is still handles.axes1 
plot(x, x.^(0)) 

newax = subplot(2,1,2);  % This is a new axes 
plot(x, x); 

Wenn Sie einen Container in GUIDE verwenden möchten, würde ich einen uipanel anstelle eines axes definieren. Dann können alle Subplots in diesem Panel leben.

function plot_push1_callback(hObject, eventdata, handles) 
    % Make one plot in the panel 
    subplot(1,1,1, 'Parent', handles.panel); 

    plot(x, x.^(n+1)); 

function plot_push2_callback(hObject, eventdata, handles) 

    % Make the first subplot in the panel 
    subplot(2,1,1, 'Parent', handles.panel) 

    plot(x, x.^0); 

    % Make the second subplot in the panel 
    subplot(2,1,2, 'Parent', handles.panel) 

    plot(x, x) 
+0

In Guide habe ich einen dedizierten Space (axes1) vorbereitet, in dem ich je nach gedrückter Taste verschiedene Dinge plotten möchte, ich habe stattdessen versucht den vorgeschlagenen 'delete()' zu setzen von meiner 'cla()', aber es funktioniert auch nicht.Ich bin ein wenig verloren jetzt, wie schlagen Sie vor, dass ich diese zwei Druckknöpfe anordnen sollte? – Agnieszka

+0

@Agnieszka Ein Nebenplot erstellt zwei Achsen.In GUIDE möchten Sie eine verwenden 'uipanel' als der Container, um Dinge in NICHT Achsen zu zeichnen – Suever

+0

@Agnieszka Hinzugefügt ein Beispiel, wie man das macht – Suever