1
我有數據構建比例,因此我想使用紅色/白色/藍色的地圖,其中白色分配給1和紅色和藍色包圍它。是否有捷徑可尋?Matlab colormap對稱約1
我有數據構建比例,因此我想使用紅色/白色/藍色的地圖,其中白色分配給1和紅色和藍色包圍它。是否有捷徑可尋?Matlab colormap對稱約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