1
私は比率として構成されたデータを持っています。したがって、赤と白と青のカラーマップを使用したいと思います。白は1に、赤と青はそれを囲みます。これを行う簡単な方法はありますか?Matlabカラーマップ対称約1
私は比率として構成されたデータを持っています。したがって、赤と白と青のカラーマップを使用したいと思います。白は1に、赤と青はそれを囲みます。これを行う簡単な方法はありますか?Matlabカラーマップ対称約1
interp1
を使用して、青色の白い読み取りカラーマップを簡単に作成できます。ここでは、入力として整数をとり、カラーマップを構築する少し無名関数があります。白の通話を制御するに
bwr = @(n)interp1([1 2 3], [0 0 1; 1 1 1; 1 0 0], linspace(1, 3, n), 'linear')
colormap(bwr(64));
、あなたは軸のCLim
を設定することをお勧めします。あなたは、白くしたい価値の周りにあなたのクライムを集中させたいでしょう。
set(gca, 'clim', [0 2])
とフル例として:
data = reshape(linspace(0, 100, 16), [4 4]) ./ 50;
figure
imagesc(data);
colormap(bwr(64));
colorbar;
set(gca, 'clim', [0 2])
あなたは比率を持っているので、0と1の間の値がすべての値に対し、圧縮され、そのかかわらず、覚えておいてください> 1は理論的には無限に進むことができます。一例として、 :
data = reshape(linspace(1, 200, 16), [4 4]) ./ 50;
あなたはプロットする前に、あなたのデータをログ変換してから初期比の値を表すためにカラーバーの目盛りを変更することができますこれを修正するには。
LData = log(data);
imagesc(LData)
colormap(bwr(64));
cbar = colorbar();
set(gca, 'clim', [-1 1] * max(abs(LData(:))))
cticks = get(cbar, 'Ticks');
cticklabels = arrayfun(@(x)sprintf('%0.2f', x), exp(cticks), 'uniformoutput', false);
set(cbar, 'TickLabels', cticklabels);
ブリリアント、これは動作します!どうもありがとうございます! – agold2121