Предотвращение агрессивного автоматического масштабирования в Matlab



Допустим, у меня есть следующий код Matlab:



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


В точке (а) вертикальный диапазон моего графика равен [1,10].

В точке (B) вертикальный диапазон моего графика равен [0,20].

В точке с вертикальный диапазон снова равен [1,10].



Мне нравится, что график автоматически масштабируется от шага (а) до (Б). Мне не нравится автоматическое масштабирование от (B) до (C) - это заставляет вещи прыгать слишком много.



Есть ли способ установить масштаб сюжета, чтобы он расширялся, но никогда не сжимался?



На мой взгляд, это выглядит например:



set(gca,'XLimMode','auto_maxever');
651   1  

1 ответ:

Однако, насколько мне известно, в Matlab нет такой функции, как вы описываете...

Вы можете точно установить пределы X и Y, выполнив следующую команду:

set(gca,'XLim',[x1 x2], 'YLim',[y1 y2]);

Быстрый псевдоним для той же самой команды:

axis([xmin xmax ymin ymax]);

Вы также можете "заморозить" ограничения в любой момент, изменив XLimMode и YLimMode с Auto на Manual:

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

Или вы можете использовать еще один псевдоним, который делает то же самое:

axis('manual');

Если данные при непрерывном получении рекомендуется сохранять ограничения оси перед каждым обновлением, а затем выполнять ручное масштабирование.

Comments

    Ничего не найдено.