查看: 90|回复: 1|关注: 1

[已解决] 多个子图共用一个colorbar如何保证子图size一致

[复制链接]

新手

38 麦片

财富积分


050


15

主题

83

帖子

3

最佳答案
  • 关注者: 1
我有九个子图,三行三列,我希望每一行都共用一个colorbar,只在每行最后一个子图旁边标注colorbar,但是发现每行最后一个子图的size明显小于其他的子图,我该如何把调整称为一致。


代码如下:

  1. close all;
  2. clear;
  3. clc;





  4. data_str = {'Matlab_11.mat','Matlab_12.mat','Matlab_13.mat','Matlab_14.mat','Matlab_15.mat','Matlab_16.mat','Matlab_17.mat','Matlab_18.mat','Matlab_19.mat'};
  5. title_str = {'(a)f/f_{ce}=1.1','(b)f/f_{ce}=1.2','(c)f/f_{ce}=1.3','(d)f/f_{ce}=1.4','(e)f/f_{ce}=1.5','(f)f/f_{ce}=1.6','(g)f/f_{ce}=1.7','(h)f/f_{ce}=1.8','(i)f/f_{ce}=1.9'};


  6. figure();
  7. for ii = 1:3
  8.     for jj = 1:3
  9.         load(data_str{ii*3-3+jj});
  10.         subplot(3,3,ii*3-3+jj);
  11.         imagesc(alpha_eq_all,log10(EkeV_all_J),kDaak);
  12.         h = colorbar('EastOutside');
  13.         colormap(jet(192));% jet red-->yellow-->blue
  14.         h.Label.Interpreter = 'latex';
  15.         h.Label.String      = '$\log10(\left|D_{\alpha\alpha}\right|),s^{-1};
  16.         h.Label.FontSize    = 13;
  17.         caxis([-7,-3]);
  18.         axis xy;
  19.         title(title_str{ii*3-3+jj});
  20.         if jj ~= 3
  21.             colorbar('off');
  22.         end
  23.         if jj == 1
  24.             ylabel({'AE^{*}> 300nT','E_k(KeV)'},'FontSize',10);
  25.         end
  26.     end

  27.     if ii == 3
  28.        xlabel('\alpha_{eq}(deg)','FontSize',10);
  29.     end

  30. end
复制代码



第三列的size明显没有前两列的size宽
效果如图:
1.jpg

回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

中级

514 麦片

财富积分


5001500


1

主题

328

帖子

96

最佳答案
  • 关注者: 7
发表于 前天 16:45 | 显示全部楼层 |此回复为最佳答案
你可以自己设置colorbar的位置,
  1. c = colorbar;
  2. c.Position = [0.5 0.5 0.05 0.13];
复制代码
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表