2012-05-29 236 views
1

我有浮子n個矩陣(np.array),我想使用imshow繪製在一起但與具有其值不同的顏色範圍內的每個之一。例如n =白色 - >藍色,n + 1 =白色 - >紅色等 有沒有辦法做到這一點?Matplotlib imshow - 顯示不同的顏色

的矩陣是相同的尺寸,並且在着色彼此不是太大的問題的,因爲大多數基質的值都爲0(希望將是白色的)。

我想的是一樣的東西:

1矩陣

000 
010 
000 

第二矩陣

000 
000 
001 

所以我想也許我可以在第二矩陣轉換成:

222 
222 
223 

,然後使0-> 1白色至藍色和2-> 3白色至紅色。

不幸的是,我不知道如何用matplotlib colormap來做到這一點。

+0

這可能會有幫助:http://stackoverflow.com/questions/3373256/set-colorbar-range-in-matplotlib –

+0

據我可以告訴它不適用但無論如何感謝 – Anake

+0

採取第一個矩陣,使用一個顏色地圖瓦特/一些Vmin和VMAX;轉換第二個矩陣,使用前面的vmax作爲vmin和更大的vmax繪製它。 –

回答

5

imshow將不積被設置爲None值。如果數據足夠稀疏,可以將它們放在彼此的頂部。

import numpy as np 
import pylab as plt 

# Your example data 
A1 = np.zeros((3,3)) 
A2 = np.zeros((3,3)) 
A1[1,1] = 1 
A2[2,2] = 1 

# Apply a mask to filter out unused values 
A1[A1==0] = None 
A2[A2==0] = None 

# Use different colormaps for each layer 
pwargs = {'interpolation':'nearest'} 
plt.imshow(A1,cmap=plt.cm.jet,**pwargs) 
plt.imshow(A2,cmap=plt.cm.hsv,**pwargs) 
plt.show() 

enter image description here

+0

非常感謝你非常 – Anake

相關問題