2017-02-09 90 views
1

我在使用matplotlib在Python中爲我的情節創建一個顏色條時遇到了問題。我正在使用一個色彩地圖,而不是對所繪製的所有數據進行着色,而是根據我未繪製的值爲繪圖提取顏色。希望這是有道理的.. 因此,我在一個for循環,每次創建一個基於某個參數的顏色的情節。像這樣(的數據是創建一個兆瓦的例子,我的數據是比較複雜):在我的matplotlib旁邊創建一個顏色條,不使用顏色貼圖來繪製數據

import matplotlib as mpl 
from matplotlib import pyplot as plt 
import numpy as np 

xdata = np.array(range(10)) 
parameter = [0.5, 0.3, 0.78, 0.21, 0.45] #random parameter example 

cmap = mpl.cm.get_cmap('jet') 

for i in range(len(parameter)): 
    clr = cmap(parameter(i)) 
    plt.plot(xdata,xdata**i,c=clr) 

plt.show() 

現在,我想是一個側面的彩條(或實際上是兩個,但這是另一個問題,我想),它顯示噴射顏色映射和相應的值。這些值需要縮放到新的最小值和最大值。

到目前爲止,我已經發現了下面的,但我不明白它足以將其應用到我自己的問題:

Getting individual colors from a color map in matplotlib 哪位告訴我如何提取顏色並展示瞭如何創建標準化colormap

Colorbar only 哪應該告訴我如何在不使用繪圖數據的情況下添加一個顏色條,但我對此不夠了解。我的問題是創建軸。我不明白這部分,如果我想把色條放在我的情節旁邊。在這個例子中,他們創建了一個處理fig的圖形,但在我的情況下,該圖形是在我做plt.imshow(image)時創建的,因爲這是我開始的,然後我正在繪製圖像。我不能在這裏使用fig.add_axes

我希望你能幫助我。如果我也可以創建一個「反轉」的顏色條,那將是非常棒的。所以顏色是反方向的,或者是條的旁邊的值。

+0

在腳本中的任何位置,您都可以通過'fig = plt.gcf()'和軸通過'ax = plt.gca()'獲得圖形。因此,添加軸可以通過'plt.gcf()。add_axes(...)'完成。在繪製任何東西之前放置'fig = plt.figure()'也沒有任何問題。每個標準色彩映射都有一個反轉版本,其名稱末尾有'_r',例如你可以使用'viridis_r'而不是'viridis'。 – ImportanceOfBeingErnest

+0

謝謝,這聽起來像我所需要的!很遺憾,直到明天才能嘗試,如果能解決問題,會讓你知道。我應該想到gcf和gca,因爲我已經使用過很多次了... -.- –

+0

嘿,謝謝,這正是我需要的。我想我可以/應該知道,但我不能把它們放在一起,所以你真的幫助我在這裏。如果你把它作爲答案發布,我會投它的;-) –

回答

0

在腳本中的任何位置,您都可以通過fig = plt.gcf()和軸通過ax=plt.gca()獲取圖形。所以,添加一個軸可以通過plt.gcf().add_axes(...)完成。
在繪製任何東西之前放​​也沒有錯。

請注意,創建新軸之後,plt.gca()將返回新軸,所以在添加新軸之前創建對主軸的引用是一個好主意。
一個方便的方式獲得的數字,供以後參考的軸是通過

fig, ax = plt.subplots() 

色彩映射表以創建圖: 每個標準顏色表具有反轉的版本,其在它的名字的端部具有_r ,例如您可以使用viridis_r而不是viridis

+0

完美,只是我需要感謝。答案接受,不能upvote它,但遺憾 –

相關問題