使用热图绘制2个变量

时间:2016-08-15 10:49:09

标签: python plot heatmap

我在python 3上有两个变量x和y,其中x的范围是1到5,y是从0.03到0.7然后我有一个方法,它取x和y并生成一个标量数。我想创建一个热图类型图,其中x为x轴,y为y轴,颜色键表示方法f(x,y)。这是怎么做到的?我尝试过使用热图,但由于范围不能达到令人满意的x和y范围,所以罐头似乎可以使用它。这是我找到的一个例子,这与我正在寻找的内容很接近

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


x = np.random.randn(8873)
y = np.random.randn(8873)

heatmap, xedges, yedges = np.histogram2d(x, y, bins=50)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]

plt.clf()
plt.imshow(heatmap, extent=extent)
plt.show()

但我希望颜色用键表示f(x,y)

2 个答案:

答案 0 :(得分:1)

如果您从2个单维向量开始,xy来计算2D点网格上xy的函数使用numpy.meshgrid生成所述2D网格。

from numpy import linspace, meshgrid
x, y = linspace(1, 5, 41), linspace(0.03, 0.70, 68)
X, Y = meshgrid(x, y)

看到你得到两个网格有点惊讶......一个只包含x个值而另一个只包含y个值(你只需要打印XY以便自己查看。

使用这两个网格,您可以计算结果网格,但只有当您使用numpy的{​​{1}}时才会有效...例如。

ufuncs

最终您可以绘制结果,您要使用的def f(x, y): from numpy import sin, sqrt return sin(sqrt(x*x+y*y)) 方法为pyplot,并添加您必须使用的颜色条,始终来自pcolor,{ {1}}方法......

pyplot

当最终达到这一点时,传统要求输出样本 enter image description here 这就是全部

答案 1 :(得分:0)

让我们说z = f(x, y)。您的热图的关键字只能代表一个维度(通常是 z )。

是什么意思?
  

表示方法f(x,y)

对于二维绘图,您需要一个三维热图。