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

时间:2017-09-17 04:34:14

标签: python matplotlib 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:

enter image description here

2:

enter image description here

显然,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'),但它不起作用,我该怎么做才能解决这个问题?我需要你的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

尝试,

ax.set_aspect(1)

它对我有用。

修改1

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