Python 使用matplotlib绘制热图

Python 使用matplotlib绘制热图,python,matplotlib,heatmap,Python,Matplotlib,Heatmap,我以这种方式生成了一个数据集: aa = linspace(A - 5, A + 5, n_points) bb = linspace(B - 1.5, B + 1.5, n_points) z = [] for a in aa: for b in bb: z.append(cost([a, b])) 我想和头部的地图,其中z定义了点a,b的颜色。 我需要这个来分析局部极小值 我正在使用matplotlib,但我不知道如何进行 我只是做了一些类似的事情,我使

我以这种方式生成了一个数据集:

 aa = linspace(A - 5, A + 5, n_points)
 bb = linspace(B - 1.5, B + 1.5, n_points)
 z = []
 for a in aa:
     for b in bb:
         z.append(cost([a, b]))
我想和头部的地图,其中z定义了点a,b的颜色。 我需要这个来分析局部极小值


我正在使用matplotlib,但我不知道如何进行

我只是做了一些类似的事情,我使用了散点图

plt.scatter(x_vals, y_vals, s = 100,  c = z_vals, cmap = 'rainbow')
c = plt.colorbar()

我只是做了一些类似的事情,我使用了散点图

plt.scatter(x_vals, y_vals, s = 100,  c = z_vals, cmap = 'rainbow')
c = plt.colorbar()
通常,您会使用imshow或pcolormesh进行此操作

例如:

import numpy as np
import matplotlib.pyplot as plt

n_points = 10
aa = np.linspace(-5, 5, n_points)
bb = np.linspace(-1.5, 1.5, n_points)

def cost(a, b):
    return a + b

z = []
for a in aa:
    for b in bb:
        z.append(cost(a, b))

z = np.reshape(z, [len(aa), len(bb)])

fig, ax = plt.subplots()
im = ax.pcolormesh(aa, bb, z)
fig.colorbar(im)

ax.axis('tight')
plt.show()
但是,最好将示例代码编写为:

import numpy as np
import matplotlib.pyplot as plt

n_points = 10
a = np.linspace(-5, 5, n_points)
b = np.linspace(-1.5, 1.5, n_points)
a, b = np.meshgrid(b, a)

z = a + b # Vectorize your cost function

fig, ax = plt.subplots()
im = ax.pcolormesh(a, b, z)
fig.colorbar(im)

ax.axis('tight')
plt.show()
或者,更简洁地说:

import numpy as np
import matplotlib.pyplot as plt

npoints = 10
b, a = np.mgrid[-5:5:npoints*1j, -1.5:1.5:npoints*1j]

z = a + b

fig, ax = plt.subplots()
im = ax.pcolormesh(a, b, z)
fig.colorbar(im)

ax.axis('tight')
plt.show()
通常,您会使用imshow或pcolormesh进行此操作

例如:

import numpy as np
import matplotlib.pyplot as plt

n_points = 10
aa = np.linspace(-5, 5, n_points)
bb = np.linspace(-1.5, 1.5, n_points)

def cost(a, b):
    return a + b

z = []
for a in aa:
    for b in bb:
        z.append(cost(a, b))

z = np.reshape(z, [len(aa), len(bb)])

fig, ax = plt.subplots()
im = ax.pcolormesh(aa, bb, z)
fig.colorbar(im)

ax.axis('tight')
plt.show()
但是,最好将示例代码编写为:

import numpy as np
import matplotlib.pyplot as plt

n_points = 10
a = np.linspace(-5, 5, n_points)
b = np.linspace(-1.5, 1.5, n_points)
a, b = np.meshgrid(b, a)

z = a + b # Vectorize your cost function

fig, ax = plt.subplots()
im = ax.pcolormesh(a, b, z)
fig.colorbar(im)

ax.axis('tight')
plt.show()
或者,更简洁地说:

import numpy as np
import matplotlib.pyplot as plt

npoints = 10
b, a = np.mgrid[-5:5:npoints*1j, -1.5:1.5:npoints*1j]

z = a + b

fig, ax = plt.subplots()
im = ax.pcolormesh(a, b, z)
fig.colorbar(im)

ax.axis('tight')
plt.show()

你试过谷歌搜索吗?举个例子,你有没有尝试过搜索谷歌?以及example@Jeo我有一个疑问。如果我不知道我必须从数据文件中提取的a和b坐标,在这种情况下,我们如何给出?假设我必须使用分布式城市的gps坐标设置数据,为什么轴“紧”是必要的?谢谢:@tommy.carstensen-默认情况下,matplotlib将为轴限制选择偶数。注意:这将在2.0中更改为边距样式填充。ax.axis'tight'指定轴限制应与数据限制完全匹配。在这种情况下,我们不想显示没有数据的区域,所以我们使用ax.axis'tight.@Jeo我有一个疑问。如果我不知道我必须从数据文件中提取的a和b坐标,在这种情况下,我们如何给出?假设我必须使用分布式城市的gps坐标设置数据,为什么轴“紧”是必要的?谢谢:@tommy.carstensen-默认情况下,matplotlib将为轴限制选择偶数。注意:这将在2.0中更改为边距样式填充。ax.axis'tight'指定轴限制应与数据限制完全匹配。在这种情况下,我们不想显示没有数据的区域,所以我们使用ax.axis'tight'。