カラーマップ,カラーバーを対数軸にする

はじめに

濃度やスペクトルなど,指数関数的な減少や増加のある分布に対しては,対数軸を使って描画をしたい.という動機でやってみた

Linear scale

下図のような分布(変数A)は,普通に書いてもわかりにくい.

% Figure 1
figure
surf(A);
axis tight
% Figure 2
figure
surf(A);
colorbar;
caxis([0 1000])

surf_linearscale.png pcolor_linearscale.png

Logarithmic scale

Aにlogをかけて,colorbarのラベルをいじることで, colorbarの表示も元の値と一致した図ができる.
対数軸は0以下がある場合に厄介なのでNaNに置き換える.
また,ticksという変数で事前にcolorbarの目盛り位置を指定しておく.
tlabelsは,ticksを元に書き換える目盛りラベルのテキスト,10^{n}を一括で作成している.

A(A<=0.0) = NaN;
ticks = 0.0:0.5:3.0;
tlabels = [repmat('10^{',[length(ticks),1]),num2str(ticks', '%-.1f'),repmat('}',[length(ticks),1])];
% Figure 3
figure
pcolor(log10(A));
cb = colorbar;
caxis([min(ticks) max(ticks)])
set(cb,'Ticks',ticks,'TickLabels',tlabels)
% set(cb,...)の代わりに,以下ような書き方でもOK
%cb.Ticks = ticks;
%cb.TickLabels = tlabels;

pcolor_logscale.png


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-02-08 (Fri) 03:43:56 (41d)