我在GUI中使用y
轴上的两个不同矢量和x
轴上的相同矢量在一个轴上进行绘图。
然后我在GUI中放置了两个复选框。
我想让例如,当第一个复选框是' on
',我的轴显示我在图上的第一个矢量,当是' off
',矢量在轴上的可见性是off
,同样的第二个复选框只有第二个矢量。实际上,我的复选框是用来将on
或off
的可见性在轴上的单个向量。
function checkbox1_Callback(hObject, eventdata, handles)
if (get(hObject,'Value')) == 1
plot(vectorx,vectory);
else
???
end
当我的复选框为' on
'时,向量在plot上可见,但当复选框为' off
'时,我无法删除它,我可以使用函数cla()
,但该函数删除所有轴上的。
如果您希望复选框只控制给定情节的可见性,则需要在创建情节之前创建情节并保存情节的句柄,以便以后可以重用它来打开或关闭可见性。
在代码的其他地方:
handles.handle_plot1 = plot(vectorx,vectory);
然后在复选框的回调中:
function checkbox1_Callback(hObject, eventdata, handles) handles.handle_plot1 = handles.handle_plot1 %// optional, you can use another way to retrieve your handle if (get(hObject,'Value')) == 1 set(handle_plot1, 'visible' , 'on') else set(handle_plot1, 'visible' , 'off') end
不要忘记保存plot的句柄(就在您创建它之后),以便您可以从回调中检索它,但我假设您知道如何做到这一点,因为在您的原始代码中,您的回调已经调用了变量vectorx和vectory。
显然,对第二个plot和复选框做同样的事情。
这是一个关于如何实现您想要做的事情的演示。用你的代码替换这些代码中使用的数据。代码假设坐标轴标签为axes1
-
%%// --- Executes on button press in checkbox1.
function checkbox1_Callback(hObject, eventdata, handles)
vectorx = 1:50;
vectory1 = sin(vectorx);
if get(hObject,'Value')
plot(vectorx,vectory1);
else
cla(handles.axes1);
end
return;
%%// --- Executes on button press in checkbox2.
function checkbox2_Callback(hObject, eventdata, handles)
vectorx = 1:50;
vectory2 = cos(x2);
if get(hObject,'Value')
plot(vectorx,vectory2);
else
cla(handles.axes1);
end
return;