2012-07-12 120 views
2

我想填充一個數組,然後將其顯示爲圖像。我想爲每個數組元素設置兩個參數:「顏色值」和「透明度值」。 我正在使用matplotlib的imshow,但我接受其他解決方案。 我嘗試過這樣的事情,其中​​ca_map是一個MxN數組。如何設置numpy數組的每個元素的alpha值

ca_map = np.array(ca_map) 

palette = cm.jet 
palette.set_under('w', 1.0) 

plt.axis('off') 
plt.imshow(ca_map, cmap=palette, norm=colors.Normalize(vmin=0, clip=False), interpolation='sinc') 
plt.show() 

在此先感謝。

回答

2

文檔(http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.imshow)表示您可以將RGBA值的MxNx4數組傳遞給imshow。因此,假設ca_map是MxNx3,你可以這樣做:

plt.imshow(np.dstack([ca_map, alpha], ...) 

或者,如果ca_map是墨西哥比索,則:

plt.imshow(np.dstack([ca_map, ca_map, ca_map, alpha], ...) 
+0

感謝您的回答,不幸的是ca_map是一個MxN數組。我剛剛編輯了我的問題以添加該信息。 – aloctavodia 2012-07-12 05:39:08

1

盧克的回答是好MxNx3,但對M×N的情況下,他的解決方案將會給你的圖像灰色陰影(相等的rgb值)。如果您想要圖像中的任何顏色,以下可能會有幫助:

import matplotlib.pyplot as plt 
import numpy 

data = numpy.arange(12.).reshape(3, 4) 

import matplotlib.colors 
norm = matplotlib.colors.Normalize(data.min(), data.max()) 


img_array = plt.get_cmap('jet')(norm(data)) 
print img_array.shape 
img_array[..., 3] = 1 - (norm(data)/2) # <- some alpha values between 0.5-1 

plt.imshow(img_array) 
plt.show() 
相關問題