无法在listbox中的matlab gui上绘制轴

时间:2014-09-26 10:48:50

标签: matlab user-interface

我正在研究MATLAB GUI,我在其中更新列表框中的工作空间变量,然后尝试在GUI中的轴上绘制它们。

我还有一个按钮用于执行绘图操作。但是当我点击情节按钮时,我会看到一个弹出的图形。

但根据我的应用,我必须在轴上创建图。我无法这样做

请帮助

我的情节按钮代码如下:

function plot_button_Callback(hObject, eventdata, handles, varargin)
% hObject    handle to plot_button (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[x] = get_var_names(handles);
if isempty(x) 
    return
end
if isequal(x,'a')
% figure(gcf)

 try
    figure(1)

    evalin('base',['plot(a,b,''--r'')'])
    hold all
    evalin('base',['plot(a,c,''k'')'])
    hold all
    evalin('base',['plot(a,d,''g'')'])
    figure(2)
    evalin('base',['plot(a,e,''g'')'])
    hold all
       grid on   
     catch ex
    errordlg(...
      ex.getReport('basic'),'Error generating linear plot','modal')
 end

1 个答案:

答案 0 :(得分:0)

在每个GUI回调中,您有一个名为handles的变量,这是编辑/访问GUI中任何项目的关键。在绘制到现有轴的情况下,需要向绘图函数添加其他参数。这是我从我写的GUI中抽出的一行代码:

plot(handles.axes1, xdata, ydata);

现在,这种方法对您来说可能不太适合,因为您使用的是evalin功能(我不建议这样做,将信息传递给GUI)。无论如何,使用这些约束实现目标的好方法是

a = evalin('base','a');
b = evalin('base','b');
plot(handles.axes1,a,b,'--r');

您的GUI轴可能未命名为axes,您必须检查它。如果我正确理解您的目标,您也应该删除figure(1)来电。

此外,每次绘图后,您都不需要调用全部保留,一次就足够了。