用户界面- Matlab GUI多绘图复选框控件



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

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

我想让例如,当第一个复选框是' on ',我的轴显示我在图上的第一个矢量,当是' off ',矢量在轴上的可见性是off,同样的第二个复选框只有第二个矢量。实际上,我的复选框是用来将onoff的可见性在轴上的单个向量。

下面是我的代码:
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的句柄(就在您创建它之后),以便您可以从回调中检索它,但我假设您知道如何做到这一点,因为在您的原始代码中,您的回调已经调用了变量vectorxvectory

显然,对第二个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;

相关内容

  • 没有找到相关文章

最新更新