Python 用热图绘制2个变量
我在Python3上,我有两个变量x和y,其中x的范围从1到5,y的范围从0.03到0.7,然后我有一个方法,取x和y并生成一个标量数。我想创建一个热图类型的绘图,x轴为x轴,y轴为y轴,颜色键表示方法f(x,y)。这是怎么做到的?我曾尝试使用热图,但由于范围无法获得令人满意的x和y范围,罐似乎可以使其工作。这是我找到的一个例子,它与我要寻找的很接近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
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')