Matlab中如何用Colorbar控制图形的相对大小?

How to Control Relative Size of Figures with Colorbar in Matlab?

我正在尝试将信号图与具有颜色条的图像对齐。颜色条使轴水平偏移。 我的直觉方法是将图形的大小固定为某种大小,例如在 Gnuplot 中使用纸张大小。但是,不确定哪个最适合这里。

要在 Matlab 全屏模式下将缩放比例调整为正方形?

我想维护两个人物之间的关系。由于某些原因,我不能在第一个图中使用 squareform,而在后一个图中可以。 代码

figure

ax2=subplot(2,2,2); 
plot(mat2gray(pdist(data, 'correlation')));
title('Corr pdist');
cbar2 = colorbar(ax2);
xlim([0 size(mat2gray(pdist(data, 'correlation')),2)]);
set(cbar2, 'Visible', 'off');

ax4=subplot(2,2,4); 
imshow(squareform( mat2gray(pdist(data, 'correlation')), 'tomatrix') ); 
colormap('parula'); colorbar;
title('Square Corr pdist');

当 Matlab 的全屏模式时输出缩放错误,您看到颜色条方法不足以保持关系,如关于 如何控制图形的相对大小的答案 here 中所建议的在 Matlab 中使用 Colorbar?

默认视图时输出的右缩放


如何在Matlab全屏模式下保持图形的正方形视图?

我也会简单地为顶轴创建一个颜色条并将可见性设置为关闭。

figure;
ax1 = subplot(2,1,1);
ax2 = subplot(2,1,2);

cbar1 = colorbar(ax1);
cbar2 = colorbar(ax2);

set(cbar1, 'Visible', 'off')

这样做的好处是,在调整图形大小时等情况下,您将获得一致的行为,因为两个轴的大小和位置将以相同的方式呈现。

您需要记住的另一件事是在所有方面保持坐标轴相同。因此,例如,如果您在底轴上有一个图像(使用 imshow),MATLAB 默认将轴设置为正方形。要使顶部图也为正方形,您需要使用 axis square。然后他们会继续排队。

axis(ax1, 'square')