如何用Subplot与GridSpec调整子图位置尺寸?实现2×10正方形子图
解决2×10正方形子图无间隙布局问题
要实现你需要的效果,需调整画布尺寸、子图间隙并强制子图为正方形,修改后的代码如下:
import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec # 设置画布尺寸:对应10列2行的比例,宽度为高度的5倍(10/2) fig = plt.figure(figsize=(10, 2)) # 配置GridSpec,设置极小的上下/左右间隙 gs1 = GridSpec(2, 10, hspace=0.05, wspace=0.05) for a in range(10): # 第一行子图 ax = plt.subplot(gs1[0, a]) ax.set_aspect('equal') # 强制子图为正方形 ax.axis('off') # 隐藏坐标轴(不需要可删除) # 第二行子图 ax2 = plt.subplot(gs1[1, a]) ax2.set_aspect('equal') ax2.axis('off') plt.tight_layout() # 自动调整布局,避免边缘内容被裁剪 plt.show()
关键调整说明:
- 画布尺寸适配:
figsize=(10,2)匹配10列2行的子图比例,避免画布比例失衡导致子图被拉伸为矩形。 - 极小间隙设置:
hspace和wspace参数设为0.05(可改为0实现完全无间隙),控制子图间的空白间隔。 - 正方形强制:
set_aspect('equal')确保每个子图宽高比为1,无论画布如何缩放,子图始终保持正方形。 - 坐标轴隐藏:
axis('off')移除多余的坐标轴元素,让图片展示更整洁,若需保留坐标轴可删除该行。
内容的提问来源于stack exchange,提问作者Lukas Fuentes
相关产品推荐
相关产品推荐

