Python 设置pcolormesh的透明度,它将保持为栅格

Python 设置pcolormesh的透明度,它将保持为栅格,python,matplotlib,Python,Matplotlib,我需要一些帮助,因为我面临一个我不理解的问题。我想表示一些数据(使用pcolormesh),然后设置透明度。因此,我使用以下脚本 Nx = 64 Ny = Nx data1 = [0 for i in range(Nx*Ny)] data2 = [0 for i in range(Nx*Ny)] data3 = [0 for i in range(Nx*Ny)] # Generate data for this example for i in range(Nx): for j in r

我需要一些帮助,因为我面临一个我不理解的问题。我想表示一些数据(使用pcolormesh),然后设置透明度。因此,我使用以下脚本

Nx = 64
Ny = Nx
data1 = [0 for i in range(Nx*Ny)]
data2 = [0 for i in range(Nx*Ny)]
data3 = [0 for i in range(Nx*Ny)]
# Generate data for this example
for i in range(Nx):
    for j in range(Ny):
        data1[i + Nx*j] =  math.cos((math.pi/ Nx)*(i - (Nx/2)))**3 + math.cos((math.pi/Ny)*(j - (Ny/2)))**3
        data2[i + Nx*j] = math.atan2((j - (Ny/2)), (i - (Nx/2)))
max_data1 = max(data1)**2
for i in range(Nx*Ny):
    data3[i] = data1[i]**2/max_data1

data1_array = (np.asarray(data1)).reshape([Nx,Ny])
data2_array = (np.asarray(data2)).reshape([Nx,Ny])

norm = plt.Normalize(-math.pi, math.pi)


##########
f, axarr=plt.subplots(1,3, figsize=(18,6))

im0 = axarr[0].pcolormesh(data1_array, cmap='binary')
axarr[0].set_aspect('equal', adjustable='box')
plt.colorbar(im0,ax=axarr[0], shrink=.7, pad=.05, aspect=20)

im1 = axarr[1].pcolormesh(data2_array, cmap='hsv',norm=norm)
axarr[1].set_aspect('equal', 'box')
plt.colorbar(im1,ax=axarr[1], shrink=.7, pad=.05, aspect=20)

im2 = axarr[2].pcolormesh(data2_array, cmap='hsv',norm=norm) #, shading='gouraud')
axarr[2].set_aspect('equal', 'box')
plt.colorbar(im2,ax=axarr[2], shrink=.7, pad=.05, aspect=20)

f.canvas.draw()
for i,j in zip(im2.get_facecolors(),data3):
    i[3] = j 

plt.show()
plt.close()
有一个问题。。。两个像素之间的过渡不是平滑的,它仍然是一个网格。我的脚本中没有边缘颜色选项。有趣的是,当我改变阴影时,它会改变网格的形状。 有可能在两个像素之间获得平滑过渡吗

我可以添加快照,但是前面代码的复制粘贴将给出相同的结果

非常感谢您的阅读

编辑:我从代码中添加图片。可以看到每个像素之间的边缘。左:用于设置透明度的数据。中间:重要数据。右图:具有透明度的数据


我通过使用pcolor和snap='true'而不是pcolormesh解决了这个问题。