我在GUI中使用y
轴上的两个不同向量和一个轴上x
轴上的相同向量进行绘图。
然后我在GUI中放了两个复选框。
当第一个复选框是'on
'时,我希望在第一个复选框是“off
”时,我的轴会在绘图上显示第一个向量,何时为'off
',轴上向量的可见性为{{1} },同样用于第二个复选框仅第二个向量。实际上,我的复选框用于在轴上转换on
或off
个向量的可见性。
这是我的代码:
function checkbox1_Callback(hObject, eventdata, handles)
if (get(hObject,'Value')) == 1
plot(vectorx,vectory);
else
???
end
当我的复选框为“on
”时,在情节中可以看到向量,但当复选框为“off
”时我无法将其删除,我可以使用函数cla()
但该函数已删除所有在轴上。
答案 0 :(得分:2)
如果您希望复选框仅控制给定绘图的可见性,则需要先创建绘图并保存绘图的手柄,以便稍后重复使用它以打开或关闭可见性。
代码中的其他地方:
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
不要忘记保存图表的句柄(就在你创建它之后),你可以从你的回调中检索它,但我想你知道怎么做,因为你的原始代码中你的回调已经调用变量 vectorx 和 vectory 。
显然,对第二个情节和复选框做同样的事情。
答案 1 :(得分:0)
这是一个关于如何实现您想要做的事情的演示。用您的代码替换这些代码中使用的数据。代码假定轴标记为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;