诀窍是不要使用诸如scatter
or plot
在动画中,而是修改图中已有的数据。这些函数总是重置坐标区属性,这就是您看到视图重置的原因。修改现有绘图时,轴不受影响。
功能scatter3
(与所有绘图函数一样)返回渲染绘图的图形对象的句柄。如果是scatter3
,该句柄在这里具有三个令人感兴趣的属性:XData
, YData
, and ZData
。您可以更新这些属性来更改点的位置:
N = 100;
data = randn(N,3) * 40;
h = scatter3(data(:,1),data(:,2),data(:,3));
for ii = 1:500
data = data + randn(N,3);
set(h,'XData',data(:,1),'YData',data(:,2),'ZData',data(:,3));
drawnow
pause(1/5)
end
The new data
也可以完全不同,它甚至不需要包含相同数量的点。
但是当修改这三个属性时,你会看到XLim
, YLim
and ZLim
轴的属性发生变化。也就是说,轴将重新缩放以容纳所有数据。如果您需要防止这种情况,请设置轴'XLimMode
, YLimMode
and ZLimMode
to 'manual'
:
set(gca,'XLimMode','manual','YLimMode','manual','ZLimMode','manual')
手动设置限制时,限制模式始终设置为手动。