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

使用plt.add_patch报错,如何在散点集上添加指定尺寸的矩形?

解决Matplotlib绘制矩形时的add_patch报错问题

我来帮你搞定这个绘制矩形的问题!你遇到的核心错误是直接调用plt.add_patch()——这个方法并不属于pyplot模块本身,而是属于Matplotlib的Axes(坐标轴)对象。下面是修正后的完整代码,以及关键步骤的解释:

修正后的完整代码

import matplotlib.pyplot as plt
import matplotlib.patches as patches

def main():
    # 生成你定义的点集
    x = []
    y = []
    for k in range(30):
        for l in range(30):
            x.append(4*k + 2*(l % 2))
            y.append(2*l*3**(1/2))
    
    # 创建图和坐标轴对象(关键!获取Axes实例)
    fig, ax = plt.subplots()
    
    # 绘制生成的点
    ax.scatter(x, y, s=5, color='gray')
    
    # 创建你需要的矩形:左下角(0,0),宽4,高2√3
    rect = patches.Rectangle(
        (0, 0),
        width=4,
        height=2*3**(1/2),
        linewidth=1,
        edgecolor='b',
        facecolor='none'  # 这里设置为无填充,只显示边框;如果需要填充可以改成比如'lightblue'
    )
    
    # 将矩形添加到坐标轴上(这才是正确的添加方式)
    ax.add_patch(rect)
    
    # 调整坐标轴范围,确保矩形和所有点都能显示
    ax.set_xlim(-1, max(x)+1)
    ax.set_ylim(-1, max(y)+1)
    
    # 显示图形
    plt.show()

if __name__ == "__main__":
    main()

关键错误点解释

  • 错误的plt.add_patch():pyplot模块没有add_patch方法,必须通过Axes对象(也就是上面代码里的ax)来调用这个方法,才能把图形元素添加到画布上。
  • 补全矩形参数:你原来的代码里fa...应该是facecolor的缩写,我这里设置为'none'来只显示蓝色边框,你可以根据需求修改。
  • 绘制点与调整范围:添加了ax.scatter()来显示你生成的点集,同时用set_xlim和set_ylim确保所有内容都在视图范围内。

运行这段代码后,你就能看到从(0,0)开始的蓝色矩形,和你生成的点集一起显示在图里啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:09:53