用subplot命令画出多个图后,需要让这些图共用一个colorbar。在这里与大家分享我的操作,希望能帮助到有需要的人。
(备注:从 R2019b 开始,可以在分块图布局中显示共享颜色栏,无需使用此方法。)
subplot绘图后,在最后添加一个colorbar命令会导致最后一个子图变小。针对此情况,可以获取colorbar在fig中的位置,并给colorbar重新赋值。
此外,如果需要对子图的位置和大小进行微调,也可以用同样的方法。需要注意的是:重置的subplot子图位置要恰当,不能相互干扰,否则会丢失子图。
一:代码
% 特别注意,重置的subplot位置不能相互干扰,否则会丢失子图。
clear
clc
Sub1 = subplot(1,3,1);
plot(magic(5))
Position_Sub1 = get(Sub1, 'Position') % 获取第一个子图的位置[x,y,width,height]
% 四个值分别是用百分比表示的该子图的左下角的x、y的坐标、宽、高所占的比例
Position_Sub1 = Position_Sub1 + [-0.05 0 0 0 ] % 设定第一个子图向左移动
set(Sub1, 'Position',Position_Sub1) % 重置第一个子图的位置
Sub2 = subplot(1,3,2);
plot(magic(5))
Position_Sub2 = get(Sub2, 'Position') % 获取第二个子图的位置[x,y,width,height]
% 四个值分别是用百分比表示的该子图的左下角的x、y的坐标、宽、高所占的比例
Position_Sub2 = Position_Sub2 + [-0.05 0 0 0 ] % 设定第二个子图向左移动
set(Sub2, 'Position',Position_Sub2) % 重置第二个子图的位置
Sub3 = subplot(1,3,3);
plot(magic(5))
Position_Sub3 = get(Sub3, 'Position') % 获取第三个子图的位置[x,y,width,height]
% 四个值分别是用百分比表示的该子图的左下角的x、y的坐标、宽、高所占的比例
Position_Sub3 = Position_Sub3 + [-0.05 0 0 0 ] % 设定第三个子图向左移动
set(Sub3, 'Position',Position_Sub3) % 重置第三个子图的位置
colorbar('eastoutside');
hBar = colorbar;
Position_Bar = get(hBar, 'Position') % 获取colorbar位置[x,y,width,height],其中,x表示colorbar的左下角与figure左边界的距离占figure宽度的百分比;
% y表示colorbar的左下角与figure下边界的距离占figure高度的百分比;width表示colorbar的宽度占figure宽度的百分比;
% height表示colorbar的高度占figure高度的百分比。
Position_Bar = Position_Bar + [0.12 0 0 0 ] % 设定colorbar向右移动
set(hBar, 'Position',Position_Bar) % 重置colorbar的位置
get(hBar, 'Position')
二:测试结果
图1 无任何设置时
图2 设置colorbar位置并微调子图位置
三:参考链接
链接1:如何给subplot添加总的colorbar.
链接2:MATLAB中关于subplot和colorbar 位置的一些小技巧.
链接3:matlab笔记——subplot多个子图共用一个colorbar.