matplotlib 3D热图

时间:2014-11-22 16:49:32

标签: python matplotlib heatmap

如何使用pcolormesh绘制热图?我有三个相同大小的列表,X,Y和Z.当我这样做时

plt.pcolormesh(X, Y, Z)

我得到" ValueError:需要多于1个值来解包#34; 当我做的时候

plt.pcolormesh(np.array(zip(X, Y)), Z)

我明白了: enter image description here

1 个答案:

答案 0 :(得分:1)

您必须查看pcolor的文档才能看到pcolormesh的输入参数的要求。 x,y和c不能是数字列表,它们是列表或二维numpy数组。你需要二维数组,因为pcolor和pcolormesh为c的每个值绘制一个四边形,并在x和y中定义了角。与c中的特定值对应的x和y值由它们在阵列中的位置确定。

来自文档:

" X和Y,如果给出,则指定彩色四边形的(x,y)坐标; C [i,j]的四边形有角:

(X [i,j],Y [i,j]), (X [i,j + 1],Y [i,j + 1]), (X [i + 1,j],Y [i + 1,j]), (X [i + 1,j + 1],Y [i + 1,j + 1])。"

要将x和y列表更改为二维numpy数组,可以使用meshgrid

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,11)
y = np.arange(0,11)
xv, yv = np.meshgrid(x,y)
c = np.random.rand(10,10)

plt.pcolormesh(xv,yv,c)

plt.show()

pcolormesh example