我是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个复选框。请帮忙......谢谢
答案 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.plotCDS1
与handles.axis1
的值相同。需要进一步研究的是你变得奇怪的行为。