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

使用matplotlib的hlines、vlines绘制外拐角完整的矩形

解决matplotlib用hlines/vlines绘制矩形拐角缺口问题

拐角缺口是matplotlib默认线条属性导致的:默认独立线段的端点样式为butt(平头截断),横竖线段仅在坐标点边缘重叠,外侧自然会出现缺口,可通过以下几种方案解决:


方案1:使用闭合路径绘制(最推荐)

直接绘制连续的闭合矩形路径,通过设置拐角连接样式实现齐平效果,代码最简单:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
# 按 左下角→右下角→右上角→左上角→左下角 顺序定义坐标,形成闭合路径
x_coords = [0.2, 0.6, 0.6, 0.2, 0.2]
y_coords = [0.2, 0.2, 0.8, 0.8, 0.2]
# solid_joinstyle设为miter即可得到尖锐齐平的外拐角
ax.plot(x_coords, y_coords, linewidth=10, solid_joinstyle='miter', color='#1f77b4')

plt.show()

方案2:使用Rectangle补丁绘制

直接调用matplotlib内置的矩形类,原生支持闭合边框,无需手动调整线条参数:

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

fig, ax = plt.subplots()
# 参数依次为:左下角x坐标、左下角y坐标、矩形宽度、矩形高度
rect = Rectangle(
    xy=(0.2, 0.2), width=0.4, height=0.6,
    linewidth=10, facecolor='none', edgecolor='#1f77b4'
)
ax.add_patch(rect)

plt.show()

方案3:保留原hlines/vlines写法的调整方案

如果必须沿用现有hlines/vlines的写法,只需给每条线段添加solid_capstyle='projecting'参数,让线段端点自动向外延伸半个线宽的长度,补全拐角缺口:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.vlines(x=0.2, ymin=0.2, ymax=0.8, linewidth=10, solid_capstyle='projecting')
ax.vlines(x=0.6, ymin=0.2, ymax=0.8, linewidth=10, solid_capstyle='projecting')
ax.hlines(y=0.2, xmin=0.2, xmax=0.6, linewidth=10, solid_capstyle='projecting')
ax.hlines(y=0.8, xmin=0.2, xmax=0.6, linewidth=10, solid_capstyle='projecting')

plt.show()

内容的提问来源于stack exchange,提问作者baxx

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:24:06