2011-05-09 121 views
5

我想讓每個子圖共享相同的顏色條比例。我知道caxis適用於大於1的整數,但使用caxis時出現問題,例如0.001。Matlab中用散點圖繪製小數字的常用顏色條

x = 0:1:10; 
y = 0:1:10; 
z1 = .1:-.01:0; 
z2 = .01:-.001:0; 

figure; 
subplot(1,2,1); 
scatter(x,y,10,z1); colorbar; 
subplot(1,2,2); 
scatter(x,y,10,z2); colorbar; 

ex1

現在我想有散射次要情節有一個共同的彩條的規模。我試圖使用caxis,但是我沒有得到想要的結果。 左軸不能正確縮放,因爲它們都是棕色的。這怎麼解決?

ca = [0 .01]; 
figure; 
subplot(1,2,1); 
scatter(x,y,10,z1); caxis(ca); colorbar; 
subplot(1,2,2); 
scatter(x,y,10,z2); caxis(ca); colorbar; 

enter image description here

回答

8

你看到什麼是正確行爲caxis。當您設置caxis([0 0.01])時,所有大於0.01的值均被指定爲紅色(或棕色,無論您稱之爲什麼)。在z1中,除了最後一個點以外的所有點都大於0.01,因此它們全部標記爲紅色。如果你嘗試了caxis([0 0.1]),你會發現右邊的情節全是藍色的。你的兩個子情節的動態範圍相差一個數量級,所以你將無法充分表現出同樣的情節限制。

您是否嘗試過使用對數色階?請嘗試以下操作:

subplot(1,2,1); 
scatter(x,y,10,log10(z1)); colorbar; 
caxis([-3 -1]) 

subplot(1,2,2); 
scatter(x,y,10,log10(z2)); colorbar; 
caxis([-3 -1]) 

enter image description here

是否上述情節更好看?

+0

這有效!然後,我可以將顏色條上的刻度標籤更改爲「1e-4」等。 – Elpezmuerto 2011-05-09 20:06:29