如何为热图pcolormesh整理数据?

4 投票
1 回答
3226 浏览
提问于 2025-04-17 15:02

我发现的所有例子都在用随机数据。我的问题是如何把我的实际数据整理成符合解决方案的格式。

我想创建一个热图/散点图,x和y代表位置,而z代表颜色。它们都在三个长度相等的数组里。

X = [-0.11, -0.06, -0.07, -0.12, ...]
Y = [0.09, 0.13, 0.17, 0.09, ...]
Z = [0.38, 0.37, 0.44, 0.33, ...]

pcolormesh的文档似乎没有详细说明"C"是什么,只是说它可以是一个“掩码数组”。可惜我也不知道那是什么(还没搞明白)。

我该如何把我的三个数组转换成它需要的格式呢?我试着把它们放进一个numpy数组里,这样就消除了关于没有“形状”的错误,但三维数组似乎不是它想要的。

1 个回答

5

pcolormesh 这个函数需要三个二维数组。

你的 XY 没问题,但需要通过 numpy 的 meshgrid 函数处理一下,也就是:

import numpy as np
X = [-0.11, -0.06, -0.07, -0.12, ...]
Y = [0.09, 0.13, 0.17, 0.09, ...]
xx, yy = np.meshgrid(X, Y)

然后你只需要把 Z 的形状调整成和 xx 以及 yy 一样,就可以了。

对于散点图来说,XYZ 都可以直接使用:

import matplotlib.pyplot as plt
X = [-0.11, -0.06, -0.07, -0.12, ...]
Y = [0.09, 0.13, 0.17, 0.09, ...]
Z = [0.38, 0.37, 0.44, 0.33, ...]
fig, ax = plt.subplots()
ax.scatter(X, Y, c=Z)
plt.show()

撰写回答