动态绘制多个图以显示在一组轴上(一次一个图)
Dynamically plotting multiple plots to be displayed on one set of axes (one plot at a time)
在 之后,我有一个函数可以在 运行 时更新 4 个地块。这按预期工作,除了当我去更改显示的图时,它看起来像以前显示的图的残余。我从 bar
图表转到 surfc
,但我仍然看到横跨平面的条形图。我目前正在使用
设置我的数据和绘图
set(hplot2, 'yData', ME)
drawnow
我需要以某种方式刷新 axes/plot 吗?我使用 set(plot1, 'Parent', axes1)
更改坐标轴上的哪个图。我不知道问题出在哪里。
如果您在两个绘图之间切换,您可能希望在使用 cla
绘制下一图之前清除坐标轴
cla(axes1);
或者您只想切换现有绘图对象的可见性。
% To show only the bar plot
set(hbar, 'Visible', 'on')
set(hsurf, 'Visible', 'off')
% To show only the surf plot
set(hbar, 'Visible', 'off')
set(hsurf, 'Visible', 'on')
问题的根源在于,一个轴实际上可以容纳 许多 个图,因此如果您简单地创建一个新图并将其作为子图分配给轴,则其他绘图对象仍然存在。
如果您每次绘制某些内容(通过调用 bar
或 surfc
)都创建全新的图形对象,使用 cla
将是最简单的。话虽如此,如果您可以调整代码以简单地更新 现有 绘图对象,那么从性能和图形管理的角度来看都是理想的。
另外,作为另一个旁注。我不鼓励在创建对象后使用 set(plot1, 'Parent', axes1)
。直接在对象构造函数中指定 Parent
属性 会更健壮。这样你就可以确保它直接到达你想要的轴。
plot1 = bar(data, 'Parent', axes1);
编辑
现在我想起来了,既然你要在 3D 和 2D 数据之间切换,可能更容易 两个 轴在同一位置(一个用于 bar
,一个用于 surf
)。然后,您可以根据需要切换轴 on/off 的可见性。这样,您的所有视图设置都会为给定的轴保留。
barax = axes();
surfax = axes();
% Ensure they are located at the same position
link = linkprop([barax, surfax], 'Position');
hbar = bar(data, 'Parent', barax);
hsurf = surfc(data, 'Parent', surfax);
% Toggle these to switch plots.
set(barax, 'Visible', 'off')
set(surfax, 'Visible', 'on')
在 bar
图表转到 surfc
,但我仍然看到横跨平面的条形图。我目前正在使用
set(hplot2, 'yData', ME)
drawnow
我需要以某种方式刷新 axes/plot 吗?我使用 set(plot1, 'Parent', axes1)
更改坐标轴上的哪个图。我不知道问题出在哪里。
如果您在两个绘图之间切换,您可能希望在使用 cla
cla(axes1);
或者您只想切换现有绘图对象的可见性。
% To show only the bar plot
set(hbar, 'Visible', 'on')
set(hsurf, 'Visible', 'off')
% To show only the surf plot
set(hbar, 'Visible', 'off')
set(hsurf, 'Visible', 'on')
问题的根源在于,一个轴实际上可以容纳 许多 个图,因此如果您简单地创建一个新图并将其作为子图分配给轴,则其他绘图对象仍然存在。
如果您每次绘制某些内容(通过调用 bar
或 surfc
)都创建全新的图形对象,使用 cla
将是最简单的。话虽如此,如果您可以调整代码以简单地更新 现有 绘图对象,那么从性能和图形管理的角度来看都是理想的。
另外,作为另一个旁注。我不鼓励在创建对象后使用 set(plot1, 'Parent', axes1)
。直接在对象构造函数中指定 Parent
属性 会更健壮。这样你就可以确保它直接到达你想要的轴。
plot1 = bar(data, 'Parent', axes1);
编辑
现在我想起来了,既然你要在 3D 和 2D 数据之间切换,可能更容易 两个 轴在同一位置(一个用于 bar
,一个用于 surf
)。然后,您可以根据需要切换轴 on/off 的可见性。这样,您的所有视图设置都会为给定的轴保留。
barax = axes();
surfax = axes();
% Ensure they are located at the same position
link = linkprop([barax, surfax], 'Position');
hbar = bar(data, 'Parent', barax);
hsurf = surfc(data, 'Parent', surfax);
% Toggle these to switch plots.
set(barax, 'Visible', 'off')
set(surfax, 'Visible', 'on')