【问题标题】:putting limits to x,y,z interpolated heatmap in matplotlib在 matplotlib 中限制 x、y、z 插值热图
【发布时间】:2015-04-13 14:15:00
【问题描述】:

我正在寻找一个热图,我在每对空间 x,y 坐标处都有值(=热图颜色)z,但我想用 z0= 标出 [z0,z1] 之间的 z 值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)。 怎么做?谢谢

【问题讨论】:

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

标签: python matplotlib


【解决方案1】:

您可以将 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)

【讨论】:

    猜你喜欢
    • 2017-02-05
    • 2021-06-10
    • 2018-01-10
    • 2018-10-31
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2019-07-20
    • 2017-07-30
    相关资源
    最近更新 更多