2013-09-25 24 views
2

我在使用Matplotlib顏色條時遇到了一些麻煩,也許我不理解文檔(我不是英語爲母語的人)或其核心概念。如何在Matplotlib中的可自定義位置的顏色條上設置樞軸?

假設我有一個數據矩陣(形狀,N * 2)。我想對這些數據做一個散點圖,並根據浮點數的一列標籤(N * 1)添加一個顏色方案。我知道如何使用colorbar和標量映射。

但是,我對這個標籤欄中的一些透視值感興趣,我希望將這些值呈現在顏色條的一些有趣位置。例如,標籤值爲0,我想將它定位在1/3位置或中間位置 - 在我選擇的顏色條中可以有白色或灰色。

但是,如果我理解正確,colorbar只從[min,max]中的原始數據獲取[0,1]映射的數據數組。在這種情況下,我感興趣的主要值將隨機結束,除非我非常仔細地定義我的規範化函數。

因此,爲了讓我的偏移值更喜歡的白色是在顏色條的中間,我必須定義歸一化函數,它不僅規範了我的數據,而且還使樞軸值位於0.5。

對於我有限的Matplotlib經驗,這是我所知道的解決方案。

理想情況下,假設我有一列浮點數據,我可以選擇一些樞軸值,並給他們一些特殊的位置。然後我將它們歸一化並提供給色圖。但是,顏色條可以爲我之前定義的特殊位置設置特殊顏色。並通過正確的刻度線定位器和刻度標籤獲取相應的顏色條,這表明我的特殊數據透視值。

我正在尋找一個更簡單的方法(從標準庫),我可以使用實現這一點。

+0

我害怕編碼一個特殊的色彩映射和仔細的標準化函數。我想要有可伸縮的顏色映射和多範數函數。我想知道是否有人能理解我... – Hualin

+1

我會使用'LinearSegmentedColormap' http://matplotlib.org/api/colors_api.html#matplotlib.colors.LinearSegmentedColormap,以便您可以將透視顏色置於任何您想要的位置。我會建議_trying_的東西,然後編輯你的問題,包括代碼。人們對代碼的反應會比散文的牆更好(你的英語很好)。 – tacaswell

+0

啊哈,我只是想知道我能在這裏得到回覆多久。是的,我知道線性分段顏色圖。這是我會做的最後一件事,因爲matplotlib中已經有一組顏色條了,但我只是想讓它伸展,以便我可以在那裏定位我的透視值。我希望使用colorbrewer顏色映射。不管怎麼說,還是要謝謝你。我將立即編碼'linearsegmap'。 – Hualin

回答

1

如果您可以張貼您想要創作的情節,這將會非常有幫助。但基於我的理解,你只是想在一個或多個特定位置對顏色條進行一些操作。這很容易,下面的例子顯示了一個以0.5寫入文本字符串的例子。

x1=np.random.random(1000) 
x2=np.random.random(1000) 
x3=np.random.random(1000) 
plt.scatter(x1, x2, c=x3, marker='+') 
cb=plt.colorbar() 
color_norm=lambda x: (x-cb.vmin)/(cb.vmax-cb.vmin) 
cb.ax.text(0.5, color_norm(0.5), 'Do something.\nRight here', color='r') 

enter image description here

如果你想在完全相同1/3彩條的高度有0.5的值,則需要使用cb.set_clim((cmin, cmax))的方法來調整顏色條的限制。將有無限可能(cmin, cmax)適合您的需要,所以額外的約束是必要的,例如保持最小恆定或保持最大恆定或保持最大最小恆定。

+0

是的,這是我想要的一部分,可以通過定位功能在勾號位置執行某些操作。但現在呢。我們怎樣才能使色條拉伸?像RdYIGn,黃色到1/3的地方,而整個顏色地圖拉伸到適合(http://nbviewer.ipython.org/5357268)。我想我可能想要製作一個輔助函數來伸展這些預定義的顏色映射,可能來自[0,pivot1,pivot2,pivot3,...,1]數組。感謝您的答覆。 :) – Hualin

+0

主要問題是,,,由於我的語言技能,我不完全知道如何描述我的問題。再次看我的標題,男人,,,這正是你所回答的。 – Hualin

+0

'RdYiGn'中的黃色爲0.5,您想將其更改爲0.3333,同時保持最大值仍爲深綠色?也就是說,拉伸0.5以上的任何東西,壓縮0.5以下的東西?如果沒有'LinearSegmentedColormap' @tcaswell的建議,我認爲你不能有效地做到這一點。請按照以下示例進行操作:http://matplotlib.org/examples/pylab_examples/custom_cmap.html –

相關問題