用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 无任何设置时
设置colorbar的位置并微调子图的位置
图2 设置colorbar位置并微调子图位置



三:参考链接

链接1:如何给subplot添加总的colorbar.
链接2:MATLAB中关于subplot和colorbar 位置的一些小技巧.
链接3:matlab笔记——subplot多个子图共用一个colorbar.

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐