移动绘图后重置轴?
Resetting axes after moving plots around?
我目前正在开发 GUI。我想要一个 'axes',我可以根据用户的选择在上面显示多个图。目前我有 2 个条形图和 2 个 surfc 图。我正在使用
设置地块
set(p1, 'Parent', axes1)
然而,当我将条形图设置为具有 surfc 的轴时,它看起来仍然存在 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)
解决此问题的最佳方法是什么?
如果您只使用一个轴,那么当您从 3D(对于 surfc
图)更改为 2D(bar
情节)。
% Default 2D View
view(hax, 2);
% Default 3D View
view(hax, 3);
如果您允许用户在两者之间切换,则可能不值得使用默认的 2D 和 3D 视图,而是在您的按钮点击回调中,将当前视图存储在一个变量中,然后在它们出现时返回绘图,它会保留用户应用的任何自定义视点。您可以通过以下方式获取当前观点:
[az, el] = view(hax);
小吐槽
此外,通常最好在构造时分配绘图对象的父级。大多数图形对象构造函数都接受 Parent
parameter/value 对。这种方式更加稳健,因为这样绘图对象就不会绘制到错误的轴上。
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);
在处理 MATLAB 图形时,我总是发现在创建坐标轴、绘图和其他图形对象时明确父级是有益的。永远不要依赖 gca
、gcf
等,因为如果用户以某种方式在渲染中间单击,这些都会改变。
我目前正在开发 GUI。我想要一个 'axes',我可以根据用户的选择在上面显示多个图。目前我有 2 个条形图和 2 个 surfc 图。我正在使用
设置地块set(p1, 'Parent', axes1)
然而,当我将条形图设置为具有 surfc 的轴时,它看起来仍然存在 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)
解决此问题的最佳方法是什么?
如果您只使用一个轴,那么当您从 3D(对于 surfc
图)更改为 2D(bar
情节)。
% Default 2D View
view(hax, 2);
% Default 3D View
view(hax, 3);
如果您允许用户在两者之间切换,则可能不值得使用默认的 2D 和 3D 视图,而是在您的按钮点击回调中,将当前视图存储在一个变量中,然后在它们出现时返回绘图,它会保留用户应用的任何自定义视点。您可以通过以下方式获取当前观点:
[az, el] = view(hax);
小吐槽
此外,通常最好在构造时分配绘图对象的父级。大多数图形对象构造函数都接受 Parent
parameter/value 对。这种方式更加稳健,因为这样绘图对象就不会绘制到错误的轴上。
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);
在处理 MATLAB 图形时,我总是发现在创建坐标轴、绘图和其他图形对象时明确父级是有益的。永远不要依赖 gca
、gcf
等,因为如果用户以某种方式在渲染中间单击,这些都会改变。