正在关注this post我有一个函数,在运行时更新4个绘图。这可以按预期工作,除了当我去改变显示哪个图时,它看起来像是先前显示的图的残余物。我从bar
图转到surfc
,但我仍看到横跨平面的酒吧。我目前正在设置我的数据和绘图动态绘制多个绘图显示在一组轴上(一次绘制一个绘图)
set(hplot2, 'yData', ME)
drawnow
我需要刷新轴/绘图吗?我使用set(plot1, 'Parent', axes1)
更改轴上的哪个绘图。我不知道问题出在哪里。
正在关注this post我有一个函数,在运行时更新4个绘图。这可以按预期工作,除了当我去改变显示哪个图时,它看起来像是先前显示的图的残余物。我从bar
图转到surfc
,但我仍看到横跨平面的酒吧。我目前正在设置我的数据和绘图动态绘制多个绘图显示在一组轴上(一次绘制一个绘图)
set(hplot2, 'yData', ME)
drawnow
我需要刷新轴/绘图吗?我使用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
)。然后,您可以根据需要切换轴的可见性。这样,您的所有视图设置都将保留给定的轴。
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')