创建三维曲面图
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()
这样应该就可以成功画出三维曲面图了。如果还有其他问题,请提供更多信息。
【相关推荐】