2010-12-20 128 views
4

我試圖用matplotlib繪製地形高程數據。我建立了一個nx3的numpy數組,每行包含我的點的x,y,z座標(它們在x,y平面上的網格中有規律的間隔)。我試圖用這個代碼來繪製它:用matplotlib繪製地形數據plot_surface

fig = plt.figure() 

ax = fig.gca(projection='3d') 

print desiredData[:,0] 

surf = ax.plot_surface(desiredData[:,0], desiredData[:,1], 
         desiredData[:,2], rstride =1, 
         cstride = 1, cmap=cm.jet, 
         linewidth = 0, antialiased = False) 

plt.show() 

,但我得到這個錯誤:

Traceback (most recent call last): 
    File "gisConvert.py", line 203, in <module> 
linewidth = 0, antialiased = False) 
File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 663, 
in plot_surface 
rows, cols = Z.shape 
ValueError: need more than 1 value to unpack 

我在做什麼錯?

回答

4

作爲錯誤提示,

ValueError: need more than 1 value to unpack 

正在使用的一維陣列,但是plot_surface預計,XYZ 2D陣列。

這就是爲什麼你得到ValueError

+1

非常正確。 OP,請查看examples/mplot3d目錄以獲取如何使用plot_surface的一些很好的示例。 – 2010-12-20 08:22:13

+0

因此,而不是nx3陣列,我應該有3個mxp數組?我認爲這是matplotlib可以識別數據的結構? – 2010-12-20 18:54:32

+0

@Ben Jones:你需要二維數組作爲座標,是的。 – user225312 2010-12-21 15:08:55