我试图用pythonmplot3d绘制3D中的2D数组,但是我得到了一个关于轴1上不兼容维度的错误 我已经看过其他问题,答案建议使用meshgrid,但我已经在使用它,仍然得到一个错误,我的X和Y范围也乘以Z值的数量。 这是我的代码:
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)的长度为566×566
print语句只是为了确认数组的长度
错误是:
^{pr2}$运行代码和查看错误所需的代码和图像的google drive链接如下: https://drive.google.com/folderview?id=0B2ssDQewnhReWGJZYXZRSXNxRFU&usp=sharing
感谢所有帮助, 谢谢
您的
Z
数组的形状必须与X2,Y2
相同,才能使plot_surface
工作。 所以我改了线到
^{pr2}$而且成功了!在
相关问题 更多 >
编程相关推荐