我目前正在开发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)
最好的方法是什么?
答案 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
等,因为如果用户在渲染过程中以某种方式点击,这些都会发生变化。