Предотвращение агрессивного автоматического масштабирования в 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');
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