2014-12-31 26 views
0

我想弄清楚如何使用colorbar來顯示幅度而不是數值。目前,顏色條的範圍是[-x x],其中任何負值都是藍色的。在確定要繪製圖形的顏色時,我希望顏色條忽略符號值。如何使用彩條繪製數量的絕對值?

我試着將[0 x]的範圍設置爲CLim,但這只是描繪了一個負藍色的東西。

一個例子就是繪製一個球體。如果繪製一個球體,它將在原點處居中 ,顏色只會反映z軸的值。但是,我希望顏色條顯示距離中心的距離的大小。所以,在這種情況下,球體應該是代表半徑的純色。

任何想法?

+3

如果您使用的是散點圖,則可以使用'scatter(t,x,[],abs(x)),colorbar'。你可能想通過發佈一個例子來包含更多關於你想要繪製的信息。 – DreamBig

+1

我也建議使用abs(矩陣),其中矩陣是您的數據。適用於所有繪圖程序,包括pcolor和contourf。 – boxofchalk1

+0

有許多方法可以修改色條,但這些通常會刪除matlab圖的一些自動功能(例如,在調整圖形大小時,手動標記標籤是否會自動更新刻度標籤,這會導致給定刻度標籤被纏繞)。這些事情也需要一些工作來使它看起來不錯。這就是爲什麼建議修改繪圖數據的原因。然後,您可以讓matlab繪製您輸入的內容。如果你想繪製絕對值,那麼將絕對值作爲輸入是有意義的:) – patrik

回答

1

在製作圖形之前,您必須先將所繪製數據的大小(例如,使用abs(data)函數)取出來。然後,您可以使用caxis([min max])函數設置色條刻度。

例子:

rawData=repmat([-10:1:10],10,1); 

figure(1),imagesc(rawData),caxis([0 10]) % All raw values below 0 are plotted as blue 

magnData=abs(rawData) % Take absolute value of raw data 

figure(2),imagesc(magnData),caxis([0 10]) % Raw negative values are now plotted in the same color as positive raw values (i.e. ignoring the sign, per the solution you requested). 

您的解決方案(CLim)沒有工作,因爲設置的顏色範圍[0 x]將所有值的顏色比0低到0(藍色值的情況相關聯, 「jet」色彩地圖)。

+0

這仍然適用於3D繪圖嗎? – niwhsa