使用matplotlib.pcolormesh()将颜色设置为透明的正确方法?

时间:2014-03-26 18:16:42

标签: python matplotlib

我希望某个级别下的值(在这种情况下为0)与matplotlib.pcolormesh()一起绘制为透明,我似乎无法使用我找到的选项。< / p>

我尝试设置kwarg vmin=1,我尝试使用plt.cm.cmap.set_under(alpha=0)设置限制。

更新:在使用示例脚本后,vmin似乎在我身上正常工作,所以它似乎与其他一些混淆因素有关。我正在使用Basemap并尝试绘制密度图,根据数据的最小值/最大值设置级别(其他一切都为零)。

我的示例脚本显示vmin正常工作

import matplotlib.pyplot as plt
import random
import numpy as np

x = np.linspace(1,4,num=4)
y = np.linspace(1,6,num=6)
x_mesh, y_mesh = np.meshgrid(x,y)

ydim, xdim = x_mesh.shape

z = np.zeros(((ydim-1),(xdim-1)))

for j in range(ydim-1):
    for i in range(xdim-1):
        z[j,i] = (random.random())+4.

z[1:4,1:2]=0

cmap = plt.cm.Reds
plt.pcolormesh(x,y,z, cmap=cmap, vmin=4)

plt.show()

输出

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用蒙面数组:

import matplotlib.pyplot as plt
import numpy as np

z = np.sin(np.arange(100) / 2).reshape(10, 10)
z = np.ma.masked_array(z, z < -.5)

cmap = plt.cm.Reds
plt.pcolormesh(z, vmin=-1, vmax=1, cmap="RdYlBu")
plt.colorbar()

enter image description here