2010-12-20 123 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