You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:48:20