我正在使用 python 代码来绘制 3D 表面。然而,z 轴标签被图形剪切掉了。这是代码:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure(figsize=(12, 10), facecolor='lightblue')
x = np.linspace(0, 10)
y = np.linspace(0, 10)
X, Y = np.meshgrid(x, y)
for idx in range(4):
Z = np.cos(X) - np.sin(np.pi*idx/4 * Y)
ax3D = fig.add_subplot(2, 2, idx+1, projection='3d')
ax3D.plot_surface(X, Y, Z, cmap="viridis")
ax3D.set_zlabel("Title")
plt.show()
结果:3D 曲面图
是否可以在 ax 中包含轴标签?或者增加空间子图和人物?
我尝试过不同的选项,例如:
plt.subplots_adjust(left=0, bottom=0, right=0.8, top=0.7, wspace=0.5, hspace=0.2)
或fig.tight_layout()
;但似乎没有什么可以解决我的问题。
一种解决方案是缩小以减小每个子图(set_box_aspect)的大小。 人们还可以使用定义视图的三个角度:仰角、方位角和滚动角 (view_init)。
fig = plt.figure(figsize=(12/2, 10/2), facecolor='lightblue')
x = np.linspace(0, 10)
y = np.linspace(0, 10)
X, Y = np.meshgrid(x, y)
for idx in range(4):
Z = np.cos(X) - np.sin(np.pi*idx/4 * Y)
ax3D = fig.add_subplot(2, 2, idx+1, projection='3d')
ax3D.view_init(elev=30, azim=70, roll=0)
ax3D.set_box_aspect(aspect=(1,1,1), zoom=0.8)
ax3D.plot_surface(X, Y, Z, cmap="viridis")
ax3D.set_zlabel("Title")
fig.tight_layout()
plt.show()