Сделайте «Reset to Original View» для уменьшения масштаба на весь диапазон после использования xlim - PullRequest
0 голосов
/ 15 февраля 2019

Когда вы используете xlim в MATLAB, установленные вами ограничения становятся «исходным видом».

Это означает щелчок правой кнопкой мыши с помощью инструмента масштабирования и выбор «Сброс к исходному виду» не уменьшает весь диапазон.

Например:

figure(1); 
x = 0:0.1:6
plot( x, sin(x) ); % Example plot, x axis range [0, 6]
xlim( [2, 4] );    % 'Zoom' into the x axis range [2, 4]

plot

% Limits are unchanged at [2, 4] when [0, 6] is desirable.

Теперь я могу перемещаться, но если я хочу уменьшить полный диапазон (например, [0, 6]), я не могу сделать это автоматически.

Я вижу два возможных варианта, но не могу найти способ реализовать либо:

  1. Вместо использования xlim, программно zoom в сюжете.Функция zoom может принимать только масштабный коэффициент и бесполезна для масштабирования до определенного диапазона, похожего на xlim.

  2. Каким-то образом изменить поведение по умолчанию дляОбратный вызов «Сброс к исходному виду».Не уверен, что хочу перехватить этот обратный вызов, даже если бы мог.

Есть идеи?

1 Ответ

0 голосов
/ 15 февраля 2019

Один из вариантов - использовать недокументированную команду resetplotview.

С doc resetplotview:

Только для внутреннего использования.Эта функция может быть удалена в будущем выпуске.

Вызовите эту функцию перед командой xlim.

figure(1); 
x = 0:0.1:6
plot( x, sin(x) ); % Example plot, x axis range [0, 6]
resetplotview( gca, 'InitializeCurrentView' ) % Ensure we can reset the zoom
xlim( [2, 4] );    % 'Zoom' into the x axis range [2, 4]

Это приводит к желаемому результату, когда нажатие кнопки «Сброс к исходному виду» увеличивает диапазон х [0, 6], но первоначально показанный диапазон х равен [2, 4].


Поскольку эта функция недокументирована, может быть полезно иметь контекст внутренних элементов.Вы можете edit resetplotview увидеть, где реализована опция 'InitializeCurrentView'.По сути, он использует setappdata для определения атрибутов 'matlab_graphics_resetplotview', в частности, со свойством XLim как 'auto'.Возможно, вы могли бы сделать это вручную, если функция resetplotview устарела.

...