MATLAB多个子图 用一个 colorbar

%%   多个子图使用同一个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获取当前图形颜色范围

...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值