1つの図に複数のサブプロットがあります。各プロットのX軸は同じ変数(時間)です。各プロットのY軸は異なります(それが表すものとデータの大きさの両方)。
すべてのプロットの時間スケールを同時に拡大する方法が必要です。理想的には、プロットの1つで長方形ズームツールを使用し、それに応じて他のプロットのX制限を変更します。 Yの制限は、これらすべてについて変更されないままにする必要があります。 Y方向のプロットを埋めるためにデータを自動フィッティングすることは許容されます。
(この質問はStack Overflowの質問1とほぼ同じです。 Matplotlib/Pyplot:サブプロットを一緒にズームするには?( [〜#〜] matlab [〜#〜を除く] ))
YairとAmroが既に提案したように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
すべてのサブプロットを同時にズームインできるはずです
多数のサブプロットがあり、軸ハンドルを1つずつ収集するのが賢明な方法とは思えない場合は、次のコマンドで、指定されたFigureハンドル内のすべての軸ハンドルを見つけることができます。
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' );
最初の行は、タイプが「axes」で空タグ( '')のfigure_handle
の下にあるすべてのオブジェクトを検索します。空のタグの条件は、凡例のaハンドルを除外することです。凡例のタグはlegend
になります。
単なるプロット以上のものである場合、Figureには他のAxesオブジェクトが存在する可能性があります。このような場合、関心のあるプロットの軸ハンドルを識別するために、さらに条件を追加する必要があります。
一対の図をlinkaxesとリンクするには:
figure;imagesc(data1);
f1h=findobj(gcf,,’type’,’axes’)
figure;imagesc(data2);
f2h=findobj(gcf,,’type’,’axes’)
linkaxes([f1h,f2h],’xy’)