Matplotlib中使用ax.add_patch添加多个矩形补丁的实现方法
问题原因
Matplotlib 的 ax.add_patch() 方法设计上单次仅接收 1 个补丁(Patch)类对象作为入参,不支持一次性传入多个补丁。现有代码仅执行了 ax.add_patch(rect1),rect2 和 rect3 未被添加到坐标轴实例中,因此运行后仅显示第一个矩形,不符合预期。
实现方式
可根据补丁数量选择对应写法:
- 补丁数量较少时:逐次调用
ax.add_patch()传入每个补丁对象,逻辑简单直观 - 补丁数量较多时:将所有补丁存入列表等可迭代对象,通过循环批量添加,减少冗余代码
修正后可直接运行的代码
import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.patches import Rectangle fig, ax = plt.subplots(1) rect1 = mpl.patches.Rectangle((0, 800), 50, 20, linewidth=1, edgecolor='black', facecolor='black') rect2 = mpl.patches.Rectangle((200, 800), 50, 20, linewidth=1, edgecolor='black', facecolor='black') rect3 = mpl.patches.Rectangle((400, 800), 50, 20, linewidth=1, edgecolor='black', facecolor='black') # 写法1:逐个添加(3个矩形直接用这种写法即可) ax.add_patch(rect1) ax.add_patch(rect2) ax.add_patch(rect3) # 写法2:循环批量添加(补丁数量多的时候推荐,和写法1效果完全一致,二选一即可) # for rect in [rect1, rect2, rect3]: # ax.add_patch(rect) ax.set_xlim(left=0, right=1000) ax.set_ylim(bottom=0, top=1000) plt.show()
效果说明
- 修正前运行效果:

- 修正后运行效果:

内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

