Python 用热图绘制2个变量

Python 用热图绘制2个变量,python,plot,heatmap,Python,Plot,Heatmap,我在Python3上,我有两个变量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

我在Python3上,我有两个变量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)

让我们说
z=f(x,y)
。热图的键只能表示一维(通常是z)。你这是什么意思

表示方法f(x,y)


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

如果您从两个一维向量开始,
x
y
来计算二维点网格上的
x
y
函数,您必须首先使用
numpy.meshgrid
生成所述二维网格

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
ufuncs
时有效。。。e、 g

def f(x, y):
    from numpy import sin, sqrt
    return sin(sqrt(x*x+y*y))
最后,您可以打印结果,您要使用的
pyplot
方法是
pcolor
,要添加必须使用的颜色条,请始终从
pyplot
,使用
colorbar
方法

from matplotlib.pyplot import colorbar, pcolor, show
Z = f(X, Y)
pcolor(X, Y, Z)
colorbar()
show()
当最终达到这一点时,传统要求提供一个示例输出
仅此而已

颜色代表第三种颜色dimension@JLT你说得对<代码>热图(x,y,f(x,y))是三维的。请注意,您也可以使用散点图来实现不同的功能:例如:plt.scatter(x,y,c=Z,alpha=0.8,cmap='viridis',marker='s')