压缩 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]))
给出了下面的图,在修改轴编号后,它完全符合我的要求。
我正在处理二维矩阵,其中的条目是高程,并且我正在尝试使用 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]))
给出了下面的图,在修改轴编号后,它完全符合我的要求。