在Matlab中防止激进的自动缩放

Ric*_*ard 4 matlab plot scale matlab-figure

说我有以下Matlab代码:

figure;
a=plot(1:10); %A
pause();
set(a,'ydata',1:2:20); %B
pause();
set(a,'ydata',1:10); %C
Run Code Online (Sandbox Code Playgroud)

在(A)我的情节的垂直范围是[1,10].
在(B)我的情节的垂直范围是[0,20].
在(C)处,垂直范围再次[1,10].

我喜欢该图从步骤(A)到(B)自动缩放.我不喜欢从(B)到(C)的自动缩放 - 它让事情跳得太多了.

有没有办法设定情节的规模扩大但从不收缩?

在我看来,这看起来像:

set(gca,'XLimMode','auto_maxever');
Run Code Online (Sandbox Code Playgroud)

And*_*ein 6

据我所知,Matlab没有像你描述的功能,但是...

您可以设置的完全限制X,并Y通过执行以下命令:

set(gca,'XLim',[x1 x2], 'YLim',[y1 y2]);
Run Code Online (Sandbox Code Playgroud)

同一命令的快速别名是:

axis([xmin xmax ymin ymax]);
Run Code Online (Sandbox Code Playgroud)

你还不如"冻结"在任何时候,你喜欢的,通过改变限制XLimMode,并YLimModeAutoManual:

figure();
a=plot(1:10); %A
pause();
set(a,'ydata',1:2:20); %B
pause();
set(gca,'XLimMode','manual');
set(gca,'YLimMode','manual');
set(a,'ydata',1:10); %C
Run Code Online (Sandbox Code Playgroud)

或者您可以使用另一个别名,它完全相同:

axis('manual');
Run Code Online (Sandbox Code Playgroud)

如果要连续采集数据,请考虑在每次更新前保存轴限制,然后执行手动缩放.