%% 多个子图使用同一个colorbar
% [left bottom width height]
ps42 = zeros(8,4);
ps42(:,3) = 0.44;ps42(:,4) = 0.20;
ps42([7 8],2) = 0.08;ps42([5 6],2) = 0.30;ps42([3 4],2) = 0.52;ps42([1 2],2) = 0.74;
ps42([1 3 5 7],1) = 0.05;ps42([2 4 6 8],1) = 0.54;
pscol = [0.2 0.95 0.6 0.02];
figure()
subplot('position',ps42(1,:))
subplot('position',ps42(3,:))
subplot('position',ps42(5,:))
subplot('position',ps42(7,:))
subplot('position',ps42(2,:))
subplot('position',ps42(4,:))
subplot('position',ps42(6,:))
subplot('position',ps42(8,:))
h42 = colorbar('horiz'); % 设定子图8的colorbar为水平方向,若不设定,则默认colorbar方向为垂直方向
set(h42,'position',pscol) % 设定colorbar 到图的最上方
set(h42,'ticks',2.^(-5:1:3))
注意: 我们的做法是把最后一个子图的colorbar作为所有子图的colorbar ,但是8个子图的colorbar它们的caxis的范围不一定完全相同,如子图1的范围为[-6,3] ,子图8的范围为[-5,4],这时用子图8的colorbar表示所用子图的颜色是不合理的,因为有些数值超出了子图8的范围,这里的解决方法是 在绘图前获取每一个子图的范围,设定一个公共的caxis范围,并在每一张绘图命令后输入 caxis([colmin colmax]),这样做才能使所有子图的颜色有可比性。
% 找到二维绘图的数值范围
min(min(A1)) % -6
max(max(A1)) % 3
...
min(min(A8)) % -5
max(max(A8)) % 4
[colmin colmax]=[-6,4] % 数值的公共范围
figure()
subplot('position',ps42(1,:)),
caxis([colmin colmax]);
subplot('position',ps42(3,:))
caxis([colmin colmax]);
subplot('position',ps42(5,:))
caxis([colmin colmax]);
subplot('position',ps42(7,:))
caxis([colmin colmax]);
subplot('position',ps42(2,:))
caxis([colmin colmax]);
caxis % 在命令行输入caxis获取当前图形颜色范围
subplot('position',ps42(4,:))
caxis([colmin colmax]);
caxis % 在命令行输入caxis获取当前图形颜色范围
subplot('position',ps42(6,:))
caxis([colmin colmax]);
caxis % 在命令行输入caxis获取当前图形颜色范围
subplot('position',ps42(8,:))
caxis([colmin colmax]);
caxis % 在命令行输入caxis获取当前图形颜色范围
...