contourfの正しいcolorbar設定

R2017a,R2019b のバージョンで確認済.
今後の仕様変更で改善されるかもしれない.

Untitled

はじめに

まず,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

参考 MathWorks公式


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-12-24 (Tue) 09:22:10 (1584d)