matplotlib中图例句柄的基本示例中的typeerror

时间:2014-08-28 14:34:27

标签: python matplotlib

我很难理解传奇处理。来自官方matplotlib legend guide

的基本示例越多
import matplotlib.pyplot as plt
line_up, = plt.plot([1,2,3], label='Line 2')
line_down, = plt.plot([3,2,1], label='Line 1')
plt.legend(handles=[line_up, line_down])

TypeError: __init__() got multiple values for keyword argument 'handles'失败。

我做错了什么?有任何想法吗?

我的matplotlib版本为1.3.1。我在Ubuntu 14.04 ..

这是完整的回溯(在python脚本中使用上面的行)

heiland@note121:bauHS15_iomapsgenpod$ python testleg.py 
Traceback (most recent call last):
  File "testleg.py", line 4, in <module>
    plt.legend(handles=[line_up, line_down])
  File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3381, in legend
    ret = gca().legend(*args, **kwargs)
  File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 4778, in legend
    self.legend_ = mlegend.Legend(self, handles, labels, **kwargs)
TypeError: __init__() got multiple values for keyword argument 'handles'

3 个答案:

答案 0 :(得分:9)

只需删除handles关键字

即可

使用它:

import matplotlib.pyplot as plt
line_up, = plt.plot([1,2,3], label='Line 2')
line_down, = plt.plot([3,2,1], label='Line 1')
plt.legend([line_up, line_down])

答案 1 :(得分:4)

我遇到了与Jan相同的问题,在Ubuntu 14.04上运行Matplotlib 1.3.1。我尝试了Kobi K发布的答案。他的代码没有引起任何错误。但是,图例无法正确呈现: Bad legend via Matplotlib 1.3.1 我升级到Matplotlib 1.5.1,现在可以使用Jan发布的代码正确渲染图例,其中包括&#39;处理&#39;关键字(即Matplotlib legend guide中显示的代码): Bad legend via matplotlib 1.5.1

答案 2 :(得分:2)

我回来时遇到了同样的错误,但上面提到的修补程序并不适用于我。我也更新了我的matplotlib版本,但这没有帮助。

在legend()方法中删除handle参数以及哪些绘图完全标记的工作是什么;像这样:

    plot1 = plt.plot([1,2,3], 'b', label = 'first plot')
    plot2 = plt.plot([3,2,1], 'r', label = 'second plot')
    plt.legend()
    plt.show()

这很好地表达了这个: enter image description here