MATLAB - Как увеличить масштаб сюжета вместе? - PullRequest
47 голосов
/ 17 февраля 2011

У меня есть несколько участков на одной фигуре.Ось X каждого графика - это одна и та же переменная (время).Ось Y на каждом графике отличается (как в том, что оно представляет, так и в величине данных).

Я хотел бы получить способ увеличения масштаба времени на всех графиках одновременно.В идеале, используя инструмент масштабирования прямоугольника на одном из графиков, а другие графики соответственно изменяют свои пределы X.Пределы Y должны оставаться неизменными для всего этого.Автоподгонка данных для заполнения графика в направлении Y является приемлемой.

(Этот вопрос почти идентичен первому вопросу переполнения стека Matplotlib / Pyplot: как масштабировать подзаговоры вместе? (кроме MATLAB ))

Ответы [ 3 ]

44 голосов
/ 17 февраля 2011

Используйте встроенную функцию linkaxes следующим образом:

linkaxes([hAxes1,hAxes2,hAxes3], 'x');

Для более сложных связей (не только осей x или y) используйте встроенную linkprop функция

28 голосов
/ 18 февраля 2011

Используйте linkaxes, как Яир и Амро уже предложили. Ниже приведен краткий пример для вашего случая

ha(1) = subplot(2,1,1); % get the axes handle when you create the subplot
plot([1:10]);           % Plot random stuff here as an example
ha(2) = subplot(2,1,2); % get the axes handle when you create the subplot
plot([1:10]+10);        % Plot random stuff here as an example

linkaxes(ha, 'x');      % Link all axes in x

Вы должны иметь возможность увеличить все участки одновременно

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

figure_handle = figure;
subplot(2,1,1); 
plot([1:10]);   
subplot(2,1,2); 
plot([1:10]+10);

% find all axes handle of type 'axes' and empty tag
all_ha = findobj( figure_handle, 'type', 'axes', 'tag', '' );
linkaxes( all_ha, 'x' );

Первая строка находит все объекты в figure_handle типа «оси» и пустого тега (''). Условие пустого тега состоит в том, чтобы исключить ручки топора из легенд, тег которых будет legend.

На вашей фигуре могут быть другие объекты осей, если это больше, чем просто график. В таком случае вам нужно добавить больше условий для определения дескрипторов осей интересующих вас участков.

0 голосов
/ 08 декабря 2016

Чтобы связать пару цифр со ссылками, используйте:

figure;imagesc(data1);
f1h=findobj(gcf,,’type’,’axes’)
figure;imagesc(data2);
f2h=findobj(gcf,,’type’,’axes’)
linkaxes([f1h,f2h],’xy’)
...