Matlab轴缩放

时间:2010-11-03 11:13:03

标签: matlab plot scale axes

在绘制循环内部时,如何在Matlab绘图中获得轴的固定缩放?我的目标是了解数据如何在循环内发展。我尝试使用axis manualaxis(...)但没有运气。有什么建议吗?

我知道hold on可以解决问题,但我不想看到旧数据。

2 个答案:

答案 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