はじめに
まず,peaks でサンプルデータを作成する.着色範囲の境界線も定義しておく.
% サンプルデータ作成
[x,y,z] = peaks;
% contourfの線の指定
min_level = -6;
max_level = 8;
dz = 2;
デフォルトの colorbar
contourf に colorbar コマンドを使用すると,通常は色の表示が離散的にならず,図の着色との対応が不明瞭.
また,境界線の下限値未満の値は白抜きになる.
% デフォルトのcolorbar
contourf(x,y,z,min_level:dz:max_level);
axis equal tight
colorbar % デフォルトでは色が連続的な表示になる
正しい設定方法
colormap で使用する色の数と,caxis で着色範囲を適切に指定することで,境界線の範囲外も含めた正しい colorbar が作成できる.
白抜き部分が出ないために,線を範囲外にも追加する必要がある.
% 正しいcolorbar表示
figure
contourf(x,y,z,[min(z(:))-1, min_level:dz:max_level, max(z(:))+1]);
caxis([min_level-dz max_level+dz]);
colormap(parula(length(min_level:dz:max_level)+1));
axis equal tight
% colorbarの上端,下端の目盛りラベルの削除
cb = colorbar; %ハンドルを取得
cbticks = cb.Ticks; % 目盛り位置の取得
cbticksL = strsplit(num2str(cbticks,'%.0f '),' ');
cbticksL{1} = '';
cbticksL{end} = ''; % 目盛りラベルを空の文字列にする
set(cb,'Ticks',cbticks,'TickLabels',cbticksL); % 目盛位置とラベルの設定
% contourと比較して確認
figure
[C,h] = contour(x,y,z,min_level:dz:max_level);
clabel(C,h)
colormap(parula)
axis equal tight