如何在Matplotlib中创建5个带指定坐标轴范围的垂直堆叠正方形比例子图?
实现垂直堆叠的正方形Matplotlib子图
以下是直接可运行的代码,帮你创建5个垂直堆叠的正方形比例子图:
import matplotlib.pyplot as plt # 创建5行1列的子图布局,调整figsize让整体显示更舒适 fig, axes = plt.subplots(nrows=5, ncols=1, figsize=(5, 25)) # 遍历每个子图进行设置 for ax in axes: # 设置x轴和y轴范围 ax.set_xlim(0, 100) ax.set_ylim(50, 1000) # 关键:设置子图为正方形比例 # aspect = x轴范围 / y轴范围,这样x和y方向的单位长度视觉上相等 x_range = 100 - 0 y_range = 1000 - 50 ax.set_aspect(x_range / y_range) # 可选:添加示例内容,方便查看效果 ax.plot([0, 100], [50, 1000], color='gray', linestyle='--') # 调整子图间距,避免重叠 plt.tight_layout() plt.show()
关键说明:
plt.subplots(nrows=5, ncols=1):快速创建5个垂直排列的子图,axes是包含所有子图对象的列表set_xlim/set_ylim:严格设置每个子图的坐标轴范围set_aspect(x_range/y_range):这是让子图呈现正方形的核心。Matplotlib的aspect参数定义的是y轴单位长度与x轴单位长度的比值,所以用x轴的总范围除以y轴的总范围,就能让子图的视觉形状为正方形figsize=(5,25):根据子图数量调整画布大小,保证每个子图都能清晰显示tight_layout():自动调整子图间距,避免标签、标题重叠
内容的提问来源于stack exchange,提问作者Pasta Pink
相关产品推荐
相关产品推荐

