压缩 3-D MatPlotLib 图形中的垂直范围

Compressing vertical extent in 3-D MatPlotLib figures

我正在处理二维矩阵,其中的条目是高程,并且我正在尝试使用 MatPlotLib mplot3d 绘制它们。如何调整结果图形的垂直高度?举个例子,从 mplot3d 教程中的代码中提取:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np


fig = plt.figure()
ax = fig.gca(projection='3d')

# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, linewidth=0, antialiased=False)

# Configure z-axis.
ax.set_zlim(-1.01, 1.01)

plt.show()

这给出:

我想垂直压缩图片,使 z 轴上的 1.00 标记向下推到 -0.75 的当前位置。

ax.set_zlim(-1.01, 10.01) 改变 z-limit 使数据变平但保持图形高度相同。我也尝试过像 plt.figure(figsize=(20,5)) 这样的语句,但这会改变图形大小并干扰在 3-D 中旋转结果图。

如何仅压缩 z 轴?

感谢@sheldore—— 成功了。

添加:

scale_x = 1
scale_y = 1
scale_z = 0.25

ax.get_proj = lambda: np.dot(Axes3D.get_proj(ax), np.diag([scale_x, scale_y, scale_z, 1]))

给出了下面的图,在修改轴编号后,它完全符合我的要求。