Python 在matplotlib中限制x、y、z插值热图

Python 在matplotlib中限制x、y、z插值热图,python,matplotlib,Python,Matplotlib,我想绘制一个热图,在每个空间x,y坐标对上有z值(=热图颜色),但我想标出[z0,z1]之间的z值,z0=0.0和z1=0.4,而一些插值的z值在这些边界之下和之上 from numpy.random import uniform, seed from matplotlib.mlab import griddata import matplotlib.pyplot as plt import numpy as np # make up data. #npts = int(raw_input('e

我想绘制一个热图,在每个空间x,y坐标对上有z值(=热图颜色),但我想标出[z0,z1]之间的z值,z0=0.0和z1=0.4,而一些插值的z值在这些边界之下和之上

from numpy.random import uniform, seed
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
import numpy as np
# make up data.
#npts = int(raw_input('enter # of random points to plot:'))
seed(0)
npts = 200
x = uniform(-2, 2, npts)
y = uniform(-2, 2, npts)
z = x*np.exp(-x**2 - y**2)
# define grid.
xi = np.linspace(0, 1, 1000)
yi = np.linspace(0, 1, 1000)
# grid the data.
zi = griddata(x, y, z, xi, yi, interp='linear')
# contour the gridded data, plotting dots at the nonuniform data points.
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.rainbow,
                  vmax=abs(zi).max(), vmin=-abs(zi).max())
plt.colorbar()  # draw colorbar
# plot data points.
plt.show()
我想将色条和热图的颜色限制在0.0到0.4之间(因此避免在热图和色条中的颜色低于0.0或高于0.4)。
怎么做?谢谢

您可以将numpy数组中的值设置为
None
,以使其不进行抽签。比如说,

zmin = 0.0
zmax = 0.4
zi[(zi<zmin) | (zi>zmax)] = None
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.rainbow,
                  vmax=zmax, vmin=zmin)
zmin=0.0
zmax=0.4
zi[(zizmax)]=无
CS=plt.contourf(xi,yi,zi,15,cmap=plt.cm.rainbow,
vmax=zmax,vmin=zmin)

如果热图中的
z
数组中的值超出范围
(0,0.4)
,则它们应显示在热图中的什么颜色?事实上,在我的真实数据中(这里是一个示例),没有低于0.0且高于0.4的值。只有0.0125*10-312之类的值。。。所以我假设热图在我的输入值之下和之上(通过内核方法)外推值/颜色?要理解它是如何工作的,这对我来说是一个真正的问题。