【问题标题】:Plotting terrain data with matplotlib plot_surface使用 matplotlib plot_surface 绘制地形数据
【发布时间】:2010-12-20 07:03:44
【问题描述】:

我正在尝试使用 matplotlib 绘制地形高程数据。我建立了一个 nx3 numpy 数组,每一行包含我的点的 x、y、z 坐标(它们在 x、y 平面上的网格中规则地间隔开)。我试图用这段代码来绘制它:

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

我做错了什么?

【问题讨论】:

    标签: python numpy matplotlib plot


    【解决方案1】:

    正如错误提示,

    ValueError: need more than 1 value to unpack
    

    您正在使用一维数组,但 plot_surface 期望为 XYZ 提供二维数组。

    这就是您获得ValueError 的原因。

    【讨论】:

    • 完全正确。 OP,查看 examples/mplot3d 目录,了解如何使用 plot_surface 的一些很好的示例。
    • 所以我应该有 3 个 mxp 数组而不是 nx3 数组?我假设 matplotlib 可以识别数据的结构?
    • @Ben Jones:坐标需要二维数组,是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2015-04-24
    • 2012-10-04
    • 2022-01-27
    • 2014-05-29
    • 2016-08-17
    相关资源
    最近更新 更多