问题描述
我想绘制一个热图,我在每对空间 x,y 坐标处都有值(=热图颜色)z,但我想用 z0= 标记出 [z0,z1] 之间的 z 值0.0 和 z1=0.4,而一些内插 z 值低于和高于这些边界.
I'm looking to plot a heatmap for which I have the value (=heatmap color) z at each couple of spatial x,y coordinates but I want to mark out the z values between [z0,z1] with z0=0.0 and z1=0.4 while some of interpolated z values are under and above those boundaries.
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以下的颜色栏值中使用).怎么做?谢谢
I would like to restrict the colorbar and heatmap color from 0.0 to 0.4 (so avoid in the heatmap and in the colorbar valies under 0.0 and above 0.4). How to do that? Thanks
推荐答案
您可以将 numpy 数组中的值设置为 None
以不绘制它们.例如,
You can set the values in a numpy array to None
to leave them unplotted. For example,
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)
这篇关于在matplotlib中对x,y,z内插热图设置限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!