AttributeError:'NoneType'对象没有属性'legendHandles',而在自定义图例中为每个标签手动分配颜色时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AttributeError:'NoneType'对象没有属性'legendHandles',而在自定义图例中为每个标签手动分配颜色时相关的知识,希望对你有一定的参考价值。

我正在运行三个不同的for循环来分析三个不同的数据集。但是,所有数据都被绘制为一个。另外,我正在尝试为自定义图例分配颜色。这是我的代码:

    for j in green_data:
        x,y = blah.....
        plt.plot(x,y,'g')
    for j in black_data:
        x,y = blah.....
        plt.plot(x,y,'k')
    for j in red_data:
        x,y = blah.....
        plt.plot(x,y,'r')
    ax = plt.gca()
    leg = ax.get_legend()
    leg.legendHandles[0].set_color('green')
    leg.legendHandles[1].set_color('black')
    leg.legendHandles[2].set_color('red')
    plt.legend(['Green data','Black data','Red data'],loc='best')
    plt.xlabel("x data")
    plt.ylabel("y data")        
    plt.show()

当前输出:

AttributeError: 'NoneType' object has no attribute 'legendHandles'

是什么导致我的代码错误?

答案

您需要首先创建图例。

ax.get_legend()仅在创建图例之后才起作用。尝试使用leg = ax.legend()

https://jakevdp.github.io/PythonDataScienceHandbook/04.06-customizing-legends.html

以上是关于AttributeError:'NoneType'对象没有属性'legendHandles',而在自定义图例中为每个标签手动分配颜色时的主要内容,如果未能解决你的问题,请参考以下文章

AttributeError:'str'对象没有属性'author'

Python问题——AttributeError: 'NoneType' object has no attribute 'append'

text AttributeError:模块'enum'没有属性'IntFlag'

返回AttributeError:'int'对象没有属性'encode'

pymysql报AttributeError: module 'pymysql' has no attribute 'connect'

Python中链表中的'AttributeError'