Matplotlib imshow()错误

时间:2014-01-22 15:11:53

标签: python matplotlib

你好我不知道这有什么问题。我有这个mgrib的z值

pp=array(Arrays)  #This is my Array that extract a Grid

y,x=np.mgrid[slice(0,25, 1),slice(0,42, 1)]
z=pp[y,x,1]  #Extract Z with x,y position in the Array of pp

执行时:

cmap = plt.get_cmap('Azul-Rojo-Alpha')
norm = matplotlib.colors.Normalize(vmax=pp[:,:,1].max(), vmin=pp[:,:,1].min())
plt.imshow(z, cmap=cmap, norm=norm, interpolation='nearest')

给我这个错误:

ValueError: data mapping points must start with x=0. and end with x=1

如果检查并且错误在这里:

cdict1 = {
'red':   (( 0.0, 0.0, (7.0/255.0)),
        (1.0, 1.0, 1.0)),

'green': ((0.0, 0.0,    (183.0/255.0)),
         (0.0, (44.0/255.0), 1)),

'blue':  ((0.0, 0.0,1.0),
             (1.0, 0.0, 1.0))
}
cdict1['alpha'] = ((0.0, 1.0, 1.0),
                           (0.5, 0.0, 0.0),
               (1.0, 1.0, 1.0))
TEMPE = LinearSegmentedColormap('Azul-Rojo-Alpha', cdict1)  
plt.register_cmap(cmap=TEMPE)

但我不知道为什么。

对不起我的英文

1 个答案:

答案 0 :(得分:0)

你好我回答我的问题。我认为这是语法错误。

创建一个有两种颜色的词典

cdict1 = {
'red':   (( 0.0, 0.0, 0.0),(1.0, 1.0, 1.0)),
'green': ((0.0, 0.0, 0.717),(1.0, 0.17, 0.17)),
'blue':  ((0.0, 1.0,1.0),(1.0, 0.0, 0.0))}

将alpha通道设为3分

cdict1['alpha'] = ((0.0, 1.0, 1.0),(0.5, 0.0, 0.0),(1.0, 1.0, 1.0))

创建colorMap

TEMPE = LinearSegmentedColormap('Azul-Rojo-Alpha', cdict1,N=256,gamma=0.75) 

注册彩色地图

plt.register_cmap(name='temp',cmap=TEMPE)

Normalice颜色到网格的最大值和最小值

norm = matplotlib.colors.Normalize(vmax=pp[:,:,1].max(), vmin=pp[:,:,1].min(), clip = True)

调用彩色地图

cmap = plt.get_cmap('temp')

创建图片

plt.imshow(z[::-1], cmap=TEMPE, norm=norm , interpolation='nearest') #extent=[0,42,0,25]