如何增加子图和图形之间的间距?

问题描述 投票:0回答:1

我正在使用 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()
;但似乎没有什么可以解决我的问题。

python matplotlib subplot
1个回答
0
投票

一种解决方案是缩小以减小每个子图(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()

plot

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.