如何使用pcolormesh绘制热图?我有三个相同大小的列表,X,Y和Z.当我这样做时
plt.pcolormesh(X, Y, Z)
我得到" ValueError:需要多于1个值来解包#34; 当我做的时候
plt.pcolormesh(np.array(zip(X, Y)), Z)
我明白了:
答案 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()