【发布时间】:2015-08-28 09:08:48
【问题描述】:
在 MATLAB 中使用 OOP 创建 GUI 时,我无法理解如何控制要在哪个选项卡的哪个轴中绘制数据。我附上了示例代码以帮助解决我的问题
首先,加载GUI时,只有Tab 2下的Axis 2标题为(Axis 2),代码
title('Axis 1');似乎打不通。这是为什么呢?运行代码时,默认情况下,Tab1 或 Tab2 中没有绘图。如果在 Tab1 打开时单击“Plot Data”,然后切换到 Tab2,您可以看到在 Tab2 中绘制正弦曲线。但根据我的代码,或者至少我想要做的是,正弦曲线应该出现在 Tab1 的 Axis1 中。
但是当您点击 Tab2 并点击“Plot Data”时,曲线变为指数曲线,这正是我所期望的。
我对使用 MATLA 的 OOP GUI 还是很陌生,所以我可能缺少一些简单的东西。感谢您的帮助和 cmets。
classdef example < handle
properties
Figure;
TabGroupAxis;
TabsAxis;
Axis1;
Axis2;
ButtonPlotData;
DataToPlot;
end
methods
function obj = example()
create(obj)
makeUpData(obj);
end
function create(obj)
obj.Figure = figure('Position',[300 300 640 640]);
obj.TabGroupAxis = uitabgroup(obj.Figure,'Units','pixels','Position',[100 20 600 600]);
obj.TabsAxis(1) = uitab(obj.TabGroupAxis,'Title','Tab1');
obj.TabsAxis(2) = uitab(obj.TabGroupAxis,'Title','Tab2');
obj.Axis1 = axes('Parent',obj.TabsAxis(1),'Units','pixels','Position',[30 20 500 500]);
obj.Axis2 = axes('Parent',obj.TabsAxis(2),'Units','pixels','Position',[30 20 500 500]);
obj.ButtonPlotData = uicontrol(obj.Figure,'Style','pushbutton','String','Plot Data',...
'Callback',@obj.buttonPlotDataCallback);
axis(obj.Axis1);
title('Axis 1');
axis(obj.Axis2);
title('Axis 2');
end
function makeUpData(obj)
obj.DataToPlot(1).x = linspace(0,2*pi);
obj.DataToPlot(1).y = sin(obj.DataToPlot(1).x);
obj.DataToPlot(2).x = linspace(0,2*pi);
obj.DataToPlot(2).y = exp(obj.DataToPlot(1).x);
end
function buttonPlotDataCallback(obj,hObject,eventdata)
activeTab = obj.TabGroupAxis.SelectedTab.Title;
switch activeTab
case 'Tab1'
axis(obj.Axis1);
plot(obj.DataToPlot(1).x,obj.DataToPlot(1).y);
case 'Tab2'
axis(obj.Axis2);
plot(obj.DataToPlot(2).x,obj.DataToPlot(2).y);
end
end
end
end
【问题讨论】:
标签: matlab user-interface plot tabs