• Python错题集-8:AttributeError(找不到对应的对象的属性)


    1问题描述

    AttributeError: 'AxesSubplot' object has no attribute 'arc'

    2代码详情

    1. import matplotlib.pyplot as plt
    2. # 创建一个新的图形和坐标轴
    3. fig, ax = plt.subplots()
    4. # 定义弧线的参数
    5. center = (0.5, 0.5) # 圆心坐标 (x, y)
    6. width = 1.0 # 半径
    7. height = 0.5 # 半径
    8. angle = 0 # 起始角度
    9. theta = 180 # 跨越的角度
    10. # 使用ax.arc方法绘制弧线
    11. arc = ax.arc(center[0], center[1], width, height, angle=angle, theta1=0, theta2=theta, lw=2, color='blue', fill=False)
    12. # 设置坐标轴的限制以适应弧线
    13. ax.set_xlim(center[0] - width / 2, center[0] + width / 2)
    14. ax.set_ylim(center[1] - height / 2, center[1] + height / 2)
    15. # 设置坐标轴为等比例,以确保弧线不被拉伸
    16. ax.set_aspect('equal', 'box')
    17. # 显示图形
    18. plt.show()

    3问题剖析 

    AttributeError: 'AxesSubplot' object has no attribute 'arc' 这个错误意味着你尝试在AxesSubplot对象上调用一个名为arc的方法或属性,但是AxesSubplot类并没有定义这个方法或属性。换句话说,你的代码中可能包含了像ax.arc()这样的调用,但matplotlibAxesSubplot类并没有提供名为arc的函数或方法。

    matplotlib中,绘制弧线通常需要使用patches.Arc类,而不是直接调用AxesSubplot对象上的方法。如前面提供的例子所示,你需要创建一个Arc对象,并设置其参数,然后将这个对象添加到坐标轴AxesSubplot对象)上。

    如果你看到这样的错误,你应该检查你的代码,确保你没有错误地调用一个不存在的arc方法。相反,你应该按照matplotlib的文档使用patches.Arc类来创建和添加弧线。

    4代码修改

    修改地方:

    import matplotlib.patches as patches 

     4.1全部代码

    1. import matplotlib.pyplot as plt
    2. import matplotlib.patches as patches
    3. # 创建一个新的图形和坐标轴
    4. fig, ax = plt.subplots()
    5. # 定义弧线的参数
    6. center = (0.5, 0.5) # 圆心坐标 (x, y)
    7. width = 0.2 # 弧线的宽度
    8. height = 0.4 # 弧线的高度
    9. angle = 0 # 起始角度(相对于x轴的逆时针旋转角度)
    10. theta = 180 # 跨越的角度(以度为单位)
    11. # 创建一个弧线对象
    12. arc = patches.Arc(center, width, height, angle=angle, theta1=0, theta2=theta, lw=2, color='blue', fill=False)
    13. # 将弧线添加到坐标轴上
    14. ax.add_patch(arc)
    15. # 设置坐标轴的限制以适应弧线
    16. ax.set_xlim(center[0] - width / 2, center[0] + width / 2)
    17. ax.set_ylim(center[1] - height / 2, center[1] + height / 2)
    18. # 设置坐标轴为等比例,以确保弧线不被拉伸
    19. ax.set_aspect('equal', adjustable='box')
    20. # 显示图形
    21. plt.show()

  • 相关阅读:
    基于JAVA+SpringMVC+Mybatis+MYSQL的电影购票系统
    自动驾驶仿真平台概述
    swinIR论文阅读笔记
    【OS Pintos】Pintos 内核库基本数据结构 | 运行测试用例 alarm-multiple
    数据库导入数据集TPCH IMDB也可
    高性价比MOS推荐:惠海HC090N10L,HC025N10L,100V高耐压,12V/24V加湿器和3.7V打火机专用MOS
    核爆!字节跳动算法大佬手写1000页数据算法笔记:Github已标星79k
    JavaScript 面向对象的基本用法
    java 基础(核心知识搭配代码)
    MATLAB中zticks函数用法
  • 原文地址:https://blog.csdn.net/2202_75971130/article/details/136585684