Matlab GUI多个绘图复选框控件

时间:2014-03-30 10:34:54

标签: matlab user-interface checkbox plot matlab-guide

我在GUI中使用y轴上的两个不同向量和一个轴上x轴上的相同向量进行绘图。

然后我在GUI中放了两个复选框。

当第一个复选框是'on'时,我希望在第一个复选框是“off”时,我的轴会在绘图上显示第一个向量,何时为'off',轴上向量的可见性为{{1} },同样用于第二个复选框仅第二个向量。实际上,我的复选框用于在轴上转换onoff个向量的可见性。

这是我的代码:

function checkbox1_Callback(hObject, eventdata, handles)    
    if (get(hObject,'Value')) == 1  
        plot(vectorx,vectory);
    else 
        ???
    end

当我的复选框为“on”时,在情节中可以看到向量,但当复选框为“off”时我无法将其删除,我可以使用函数cla()但该函数已删除所有在轴上。

2 个答案:

答案 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;