这个类型错误要怎么改啊

创建三维曲面图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for z_idx in range(len(years)):
surf = ax.plot_surface(X, Y, Z[:,:, z_idx], cmap='coolwarm')

设置图表标题和标签

ax.set_title("旅游数据三维可视化")
ax.set_xlabel("旅游出发国")
ax.set_ylabel("旅游到达国")
ax.set_zlabel("人数")
fig.colorbar(surf, ax=ax, shrink=0.5, aspect=10)

显示图表

plt.show()

这个代码为啥一直报类型错误,前面的都没有问题

【以下回答由 GPT 生成】

回答:

这段代码的问题在于 Z[:,:, z_idx] 的类型和 ax.plot_surface 的参数要求不一致。ax.plot_surface 的参数要求是二维数组,而 Z[:,:, z_idx] 是三维数组的一个切片。

为了解决这个问题,可以使用 np.squeeze 函数将 Z[:,:, z_idx] 的维度从 (n, m, 1) 降低到 (n, m),然后再进行绘图。下面是修改后的代码:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

for z_idx in range(len(years)):
    surf = ax.plot_surface(X, Y, np.squeeze(Z[:,:, z_idx]), cmap='coolwarm')

ax.set_title("旅游数据三维可视化")
ax.set_xlabel("旅游出发国")
ax.set_ylabel("旅游到达国")
ax.set_zlabel("人数")
fig.colorbar(surf, ax=ax, shrink=0.5, aspect=10)

plt.show()

这样应该就可以成功画出三维曲面图了。如果还有其他问题,请提供更多信息。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^