2014-03-27 105 views
0

我是新來的Python和其他節目,我嘗試使用超過集合成員的循環,每一個有一個專門的數字1-21繪製的集合預報的21名成員。當我繪製地圖時,所有成員都呈現藍色。我已經對顏色映射做了一些研究,發現默認貼圖沒有編入索引,即我不能像調用列表或數組那樣調用colormap [1]。有沒有索引的色彩映射,或者有沒有解決這個問題的方法?簡而言之,我想循環使用簡單的數字來預測每個預測成員的顏色。Python的Matplotlib /底圖顏色循環

回答

2

您可以使用ax.set_prop_cycle來指定循環的顏色列表。

色彩映射表是可調用,所以一個簡單的方法,以產生色彩是0和1之間通過浮標的序列與顏色表,然後將返回的RGBA顏色數組。

例如,

In [93]: jet = plt.cm.jet 

In [94]: jet([0,0.5,1]) 
Out[94]: 
array([[ 0.  , 0.  , 0.5  , 1.  ], 
     [ 0.49019608, 1.  , 0.47754586, 1.  ], 
     [ 0.5  , 0.  , 0.  , 1.  ]]) 

import matplotlib.pylab as plt 
import matplotlib.rcsetup as rcsetup 
import numpy as np 

jet = plt.cm.jet 
fig, ax = plt.subplots() 
N = 20 
idx = np.linspace(0, 1, N) 
ax.set_prop_cycle(rcsetup.cycler('color', jet(idx))) 
x = np.linspace(0, 100, 200) 
for i in range(1, N+1): 
    ax.plot(x, np.sin(x)+i) 
ax.set_ylim(0, N+1) 
plt.show() 

enter image description here

+0

一個人怎麼能得到當前顏色週期圖的陣列? – Royi

+0

'ax._get_lines.prop_cycler'返回一個從當前顏色週期產生顏色的迭代器。假設顏色循環不包含重複項,您可以使用以下命令生成循環中的顏色列表:'seen = set()','colors = list(itertools.takewhile(lambda x:x not in seen and not seen.add (x),(元組(項目['顏色'])的項目在ax._get_lines.prop_cycler)))''。 – unutbu