移动地块后重置轴?

时间:2016-03-07 16:11:20

标签: matlab matlab-figure matlab-guide matlab-gui

我目前正在开发GUI。我想有一个'轴',我可以根据用户选择的多个图显示多个图。目前我有2个地块和2个冲浪地块。我正在使用

设置图表
set(p1, 'Parent', axes1)

然而,当我将条形图设置为具有冲浪的轴时,仍然存在z轴,并且相反的问题存在于另一个方向,但是缺少z轴。此示例脚本演示。

figure(1);
a1 = axes();
p1 = bar(1:5);

figure(2);
a2 = axes();
x = [1 2];
z = zeros(2);
p2 = surfc(x, x, z);

set(p1, 'Parent', a2)
set(p2, 'Parent', a1)

最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果您只使用单个轴,则可以在从3D(针对 TotalOrdered = g.Sum(w => (w.RequestedOn.HasValue && w.RequestedOn.Value > DateTime.Min) ? 1 :0) 绘图)更改为2D(surfc绘图)时更改Example

bar

如果您允许用户在两​​者之间切换,则可能不值得使用默认的2D和3D视图,而是在按钮单击回调中,将当前视图存储在变量中,然后当它们返回时在图中,它保留了用户应用的任何自定义视点。您可以使用以下内容获取当前视点:

% Default 2D View
view(hax, 2);

% Default 3D View
view(hax, 3);

<强>迷你咆哮

此外,通常最好在构造上指定绘图对象的父级。大多数图形对象构造函数都接受[az, el] = view(hax); 参数/值对。这种方式更加强大,因为绘图对象永远不会被绘制到错误的轴上。

Parent

在处理MATLAB图形时,我始终发现在创建轴,图和其他图形对象时明确有关父项是有益的。永远不要依赖fig1 = figure(); ax1 = axes('Parent', fig1); p1 = bar(1:5, 'Parent', ax1); fig2 = figure(); ax2 = axes('Parent', fig2); p2 = surfc([1 2], [1 2], zeros(2), 'Parent', ax2); gca等,因为如果用户在渲染过程中以某种方式点击,这些都会发生变化。