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

Matplotlib中如何用单线条连接ax.add_patch绘制的多个矩形

实现方法

在绘制矩形前按蛇形顺序计算所有矩形的中心点并连成直线,后绘制的实心黑色矩形会自动遮挡矩形内部的线段,仅露出矩形之间的连接线条,即可匹配预期效果。
修改后的完整代码如下:

import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

fig, ax = plt.subplots(1)
n = 2
line_points = []

# 按蛇形顺序收集所有矩形的中心点坐标
for j in range(n):
    # 从下往上数,偶数行从左到右取点,奇数行从右到左取点,保证相邻点对应相邻矩形
    i_iter = range(n) if j % 2 == 0 else range(n-1, -1, -1)
    for i in i_iter:
        center_x = 200 + 200*i + 5*n
        center_y = 200 + 200*j + 5*n
        line_points.append((center_x, center_y))

# 先绘制下层的连接线
xs, ys = zip(*line_points)
ax.plot(xs, ys, color='black', linewidth=1)

# 后绘制上层的实心矩形,自动遮盖矩形范围内的线段
for i in range(0,n):
    for j in range(0,n):
        rect = mpl.patches.Rectangle((200+200*i,200+200*j),10*n, 10*n, linewidth=1, edgecolor='black', facecolor='black')
        ax.add_patch(rect)

ax.set_xlim(left = 0, right = 220*n)
ax.set_ylim(bottom = 0, top = 220*n)
plt.show()

逻辑说明

  • 利用matplotlib的图层渲染顺序:先绘制的线条在下层,后绘制的不透明实心矩形在上层,无需手动计算矩形边缘的连线起止坐标,就能得到矩形间的单段连接线
  • 蛇形遍历的顺序保证连线依次衔接相邻矩形,直接修改n的取值即可适配更大尺寸的矩形网格,不需要额外调整连线逻辑。

内容的提问来源于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 13:12:18