在绘制循环内部时,如何在Matlab绘图中获得轴的固定缩放?我的目标是了解数据如何在循环内发展。我尝试使用axis manual
和axis(...)
但没有运气。有什么建议吗?
我知道hold on
可以解决问题,但我不想看到旧数据。
答案 0 :(得分:6)
如果要查看新绘制的数据替换旧的绘制数据,但保持相同的轴限制,则可以使用循环内的SET命令更新绘制数据的x和y值。这是一个简单的例子:
hAxes = axes; %# Create a set of axes
hData = plot(hAxes,nan,nan,'*'); %# Initialize a plot object (NaN values will
%# keep it from being displayed for now)
axis(hAxes,[0 2 0 4]); %# Fix your axes limits, with x going from 0
%# to 2 and y going from 0 to 4
for iLoop = 1:200 %# Loop 100 times
set(hData,'XData',2*rand,... %# Set the XData and YData of your plot object
'YData',4*rand); %# to random values in the axes range
drawnow %# Force the graphics to update
end
当您运行上述操作时,您会看到一个星号在轴上跳转几秒钟,但轴限制将保持不变。您不必使用HOLD命令,因为您只是更新现有的绘图对象,而不是添加新的绘图对象。即使新数据超出轴限制,限制也不会改变。
答案 1 :(得分:1)
您必须设置轴限制;理想情况下,你在开始循环之前就这样做了。
这不起作用
x=1:10;y=ones(size(x)); %# create some data
figure,hold on,ah=gca; %# make figure, set hold state to on
for i=1:5,
%# use plot with axis handle
%# so that it always plots into the right figure
plot(ah,x+i,y*i);
end
这将有效
x=1:10;y=ones(size(x)); %# create some data
figure,hold on,ah=gca; %# make figure, set hold state to on
xlim([0,10]),ylim([0,6]) %# set the limits before you start plotting
for i=1:5,
%# use plot with axis handle
%# so that it always plots into the right figure
plot(ah,x+i,y*i);
end