我在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)
答案 0 :(得分:1)
如果您从2个单维向量开始,x
和y
来计算2D点网格上x
和y
的函数使用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
个值(你只需要打印X
和Y
以便自己查看。
使用这两个网格,您可以计算结果网格,但只有当您使用numpy
的{{1}}时才会有效...例如。
ufuncs
最终您可以绘制结果,您要使用的def f(x, y):
from numpy import sin, sqrt
return sin(sqrt(x*x+y*y))
方法为pyplot
,并添加您必须使用的颜色条,始终来自pcolor
,{ {1}}方法......
pyplot
答案 1 :(得分:0)
让我们说z = f(x, y)
。您的热图的关键字只能代表一个维度(通常是 z )。
表示方法f(x,y)
对于二维绘图,您需要一个三维热图。