MATLAB – 如何将子图一起缩放?
我在一个图中有多个子图。 每个图的X轴是相同的variables(时间)。 每个绘图上的Y轴是不同的(无论是它所代表的和数据的大小)。
我想要一个方法来放大所有情节的时间尺度同时。 理想情况下,通过在其中一个地块上使用矩形缩放工具,并让其他地块相应地更改其X限制。 Y的限制应该保持不变。 自动拟合数据在Y方向填充图是可以接受的。
(这个问题是几乎相同的堆栈溢出问题之一Matplotlib / Pyplot:如何缩放在一起的子图 (除了MATLAB ))
使用内置的linkaxesfunction如下:
linkaxes([hAxes1,hAxes2,hAxes3], 'x');
对于更高级的链接(不只是x或y轴),使用内置的linkprop函数
Yair和Amro已经build议使用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
您应该能够同时放大所有的子图
如果有多个子图,并且逐个采集它们的轴线处理看起来不是一个聪明的方法,那么可以通过以下命令find给定graphics手柄中的所有轴手柄
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' );
第一行查找types为“axes”和空标记(“')的figure_handle
下的所有对象。 空标签的条件是排除图例的斧柄,其标签将是legend
。
如果graphics不仅仅是一个简单的graphics,还可能有其他的轴对象。 在这种情况下,您需要添加更多条件来识别您感兴趣的图的轴手柄。
链接一对数字与linkaxes使用:
figure;imagesc(data1); f1h=findobj(gcf,,'type','axes') figure;imagesc(data2); f2h=findobj(gcf,,'type','axes') linkaxes([f1h,f2h],'xy')