在GUI中复选框激活时绘制图例

时间:2017-08-19 22:45:44

标签: matlab plot matlab-guide

我是matlab gui的新手并正在开发我的第一个程序。我需要绘制约10个数据集,但只有在通过复选框选择激活时才会在轴1和轴2中生成两个绘图。有时我只想随机激活一些,但我需要激活那些激活的lengend。当我取消选中复选框时,我需要再次消失图例。我已经按照我想要的方式行事,但我无法弄清楚如何处理这个传奇。激活复选框时,相同的图例(如温度)应出现在axes1和axes2中。 到目前为止,这是我的代码:

void mouse(int button, int state, int x, int y)
{
    if (button==GLUT_LEFT_BUTTON)
    {
        switch (state) 
        {
        case GLUT_DOWN:
            Mouse_X = x;
            Mouse_Y = y;
            break;
        case GLUT_UP:
            current = Target;
            break;
        default:
            break;
        }
    }
}

和第二个复选框:

function checkbox1_Callback(hObject, eventdata, handles)
  if get(handles.checkbox1,'Value')
    hold( handles.axes1, 'on' )
    handles.plotCDS1 = plot(dataS1(:,1),NormCdS1(:,1),'LineWidth',2,'Color', [0 0 0],'parent',handles.axes1);
    hold( handles.axes2, 'on' )
    handles.plotHTS1 = plot(dataS1(:,1),dataS1(:,3),'LineWidth',2,'Color', [0 0 0],'parent',handles.axes2);  
    guidata(hObject,handles);  % do this to save the updated handles structure
 else
     if ~isempty(handles.plotCDS1);
         delete(handles.plotCDS1); 
        ~isempty(handles.plotHTS1);  
         delete(handles.plotHTS1);
     end       
end

然后我有8个复选框。请帮忙......谢谢

1 个答案:

答案 0 :(得分:0)

每个轴都需要单独的图例。您可以在legend来电中指定轴。以下是您在checkbox1回调函数中的外观:

...
if get(handles.checkbox1,'Value')
   % your plot code for axes 1  and 2
   ...

   legend(handles.axes1,'Location','northeast'); % modify according to desired labels and such.
   legend(handles.axes2,'Location','northeast');

 else
    % turn things off like before

    legend(handles.axes1,'off'); 
    legend(handles.axes2,'off'); 
 end

顺便说一下,您的代码中可能存在错误。成功plot调用的结果是绘制到的轴句柄。也就是说,handles.plotCDS1handles.axis1的值相同。需要进一步研究的是你变得奇怪的行为。