2014-11-22 120 views
0

如何使用pcolormesh繪製熱圖?我有相同的大小,X,Y和Z的三個列表當我做matplotlib 3D熱圖

plt.pcolormesh(X, Y, Z) 

我得到「ValueError異常:需要1個多值解壓」 當我做

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

我得到這個: enter image description here

回答

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]), 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