Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

typeerror in basic example for legend handles in matplotlib

I have difficulties to understand the legend handling. The more, the basic example from the official 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])

fails with TypeError: __init__() got multiple values for keyword argument 'handles'.

What am I doing wrong? Any ideas?

My matplotlib version is 1.3.1. I am on Ubuntu 14.04..

Here is the full traceback (with the above lines in the python script)

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'
like image 774
Jan Avatar asked Dec 07 '22 00:12

Jan


1 Answers

Just remove handles keyword

Use it like that:

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])
like image 105
Kobi K Avatar answered Dec 10 '22 12:12

Kobi K