2012-05-29 231 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

相关问题