如何在 python plot_surface 中设置 Z 轴的比例等于 X 和 Y 轴

how to set the scale of Z axis equal to X and Y axises in python plot_surface

我尝试在 matplotlib 中使用 plot_surface 来绘制 3D 表面。我的代码是:

fig = plt.figure()
ax = fig.gca(projection='3d')
# ax.set_aspect('equal')
ax.plot_surface(X, Y, H4200, rstride=1000, cstride=1000)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
# ax._autoscaleXon = True
# ax._autoscaleYon = True
# ax._autoscaleZon = True
# ax.set_aspect('equal', adjustable='box')

plt.show()

绘图的结果是:

1:

2:

显然,Z单位的长度不等于X、Y轴的单位

我的问题是如何设置Z轴的刻度等于X轴和Y轴的刻度?

我试过ax.set_aspect('equal'), ax._autoscaleXon = True, ax._autoscaleYon = True, ax._autoscaleZon = True, ax.set_aspect('equal', adjustable='box'),正如我的评论中所见,但它不起作用,我该如何解决这个问题?我需要你的帮助,谢谢!

试试,

ax.set_aspect(1)

对我有用。

编辑 1

在你的情况下,我怀疑 set_aspect(1) 或 set_aspect('equal') 失败,因为 matplotlib 强制自动缩放 z 轴以适应你的 z 数据的整个范围(与 x 和 y 的数量级不同)。 在这种情况下,您需要一些可用的技巧 here