MATLABの複数subplotで共通するcolorbarの追加方法


二次元プロットの場合、表現できるデータの種類はx軸、y軸と色を使った最大三種類。
三次元プロットならz軸も併せ四種類。兎に角、MATLABのplot内でcolorbarの追加についてメモ。

単一プロットの場合

例えば、複数の軌道をひとつのプロットにまとめて表したいとする。

colorSet = cool(length(family));

for i = 1:100:length(family)
    [~, ~, ~, X_out] = integrate_er3bp_ode45_stm(family(i,1).state, family(i,1).period, mu, 0);
    figure(5)
    plot3(X_out(1,:), X_out(2,:), X_out(3,:),'-', 'linewidth', 0.7, 'Color', colorSet(i,:));
end
set(gcf, 'Colormap', colorSet);
caxis([family(1,1).period, family(end,1).period]);
colorbar('eastoutside');

上記のcolorbar()関数内でバーの場所を指定。オプションはdocsを参照:
https://uk.mathworks.com/help/matlab/ref/colorbar.html

Subplotのスタック方向にcolorbarを追加する

これはどうも苦戦中… これから脱却したい…

Subplotのスタックの隣にcolorbarを追加する

https://stackoverflow.com/questions/10649286/how-to-keep-the-subplot-sizes-unchanged-after-putting-a-colorbar
より

f1=figure(1);clf;
s1=subplot(1,2,1);
surf(peaks(20));

s2=subplot(1,2,2);
surf(peaks(20));
hb = colorbar('location','eastoutside');

%% # Solution:
s1Pos = get(s1,'position');
s2Pos = get(s2,'position');
s2Pos(3:4) = [s1Pos(3:4)];
set(s2,'position',s2Pos);

https://stackoverflow.com/questions/10649286/how-to-keep-the-subplot-sizes-unchanged-after-putting-a-colorbar
https://stackoverflow.com/questions/16064451/reposition-colorbar-or-subplots