首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mplot3d python不兼容尺寸错误

mplot3d python不兼容尺寸错误
EN

Stack Overflow用户
提问于 2015-01-12 01:46:49
回答 1查看 2.4K关注 0票数 2

我试图用python mplot3d在3D中绘制一个2D数组,但是在第1轴上我得到了一个关于不兼容维度的错误--我已经看过其他问题,其中的答案建议使用meshgrid,但我已经在使用它,并且仍然得到了一个错误,我的X和Y范围也被乘以Z值的数目。这是我的代码:

代码语言:javascript
复制
def view_3d(map3d):
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    X = []
    Y = []
    Z = []
    for wid in range(len(map3d)):
        X.append(wid)
        for hi in range(len(map3d[wid])):
            if wid is 0:
                Y.append(hi)
            Z.append(map3d[wid][hi])
    print(len(X), len(Y), len(Z))
    X = np.array(X)
    Y = np.array(Y)

    X2, Y2 = np.meshgrid(X, Y)
    Z = np.array(Z)
    print(len(X2),len(Y2),len(Z))
    print(len(X2[0]), len(Y2[0]))
    surf = ax.plot_surface(X2, Y2, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
            linewidth=0, antialiased=False)

    ax.zaxis.set_major_locator(LinearLocator(10))
    ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

    fig.colorbar(surf, shrink=0.5, aspect=5)

    plt.show()

传递的2d数组(map3d)的长度为566x566。

print语句只是为了确认数组的长度。

错误是:

代码语言:javascript
复制
Traceback (most recent call last):
  File "__init__.py", line 199, in <module>
    view_3d(map_results)
  File "__init__.py", line 163, in view_3d
    linewidth=0, antialiased=False)
  File "C:\Python27\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 1564, in plot_surface
    X, Y, Z = np.broadcast_arrays(X, Y, Z)
  File "C:\Python27\lib\site-packages\numpy\lib\stride_tricks.py", line 101, in broadcast_arrays
    "incompatible dimensions on axis %r." % (axis,))
ValueError: shape mismatch: two or more arrays have incompatible dimensions on axis 1.

运行代码和查看错误所需的代码和图像的google驱动器链接如下:https://drive.google.com/folderview?id=0B2ssDQewnhReWGJZYXZRSXNxRFU&usp=sharing

感谢所有的帮助,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-12 12:30:23

Z数组必须具有与X2,Y2相同的形状才能使plot_surface工作。所以我改变了路线

代码语言:javascript
复制
Z = np.array(Z)

代码语言:javascript
复制
Z = np.array(Z).reshape(Y.size,X.size)

而且起作用了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27894253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档