【问题标题】:Matlab GUI multiple plot checkbox controlMatlab GUI 多图复选框控件
【发布时间】:2014-05-09 16:35:10
【问题描述】:

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

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

我想举个例子,当第一个复选框是“on”时,我的坐标轴会在图上显示第一个向量,而“off”何时是“off”,坐标轴上的向量的可见性是off,第二个复选框相同只有第二个向量。实际上,我的复选框用于打开轴上单个向量的 onoff 可见性。

这是我的代码:

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

当我的复选框为“on”时,向量在绘图中可见,但当复选框为“off”时我无法删除它,我可以使用函数cla(),但该函数会删除轴上的所有内容。

【问题讨论】:

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


    【解决方案1】:

    如果您希望复选框仅控制给定绘图的可见性,您需要在之前创建绘图并保存绘图的句柄,以便以后可以重复使用它来打开或关闭可见性。

    代码中的其他地方:

    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
    

    不要忘记保存绘图的句柄(在您创建它之后),以便您可以从回调中检索它,但我假设您知道如何做到这一点,因为在您的原始代码中,您的回调已经调用变量 vectorxvectory

    显然,对第二个绘图和复选框执行相同的操作。

    【讨论】:

      【解决方案2】:

      这是一个关于如何实现您想要做的事情的演示。将这些代码中使用的数据替换为您的数据。代码假定轴标签为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;
      

      【讨论】:

        猜你喜欢
        • 2012-04-19
        • 2015-01-18
        • 2010-10-21
        • 2014-10-20
        • 2016-10-01
        • 2023-03-18
        • 2018-12-23
        • 1970-01-01
        • 2011-07-20
        相关资源
        最近更新 更多