Python matplotlib-通过**kwargs传递行参数时出错

Python matplotlib-通过**kwargs传递行参数时出错,python,matplotlib,Python,Matplotlib,我有一个函数,它画了一条线,类似这样: def tmp_plot(*args, **kwargs): plt.plot([1,2,3,4,5],[1,2,3,4,5], *args, **kwargs) tmp_plot(line = '-') 当我通过传递line作为关键字参数调用它时,如下所示: def tmp_plot(*args, **kwargs): plt.plot([1,2,3,4,5],[1,2,3,4,5], *args, **kwargs) tmp_pl

我有一个函数,它画了一条线,类似这样:

def tmp_plot(*args, **kwargs):
    plt.plot([1,2,3,4,5],[1,2,3,4,5], *args, **kwargs)
tmp_plot(line = '-')
当我通过传递line作为关键字参数调用它时,如下所示:

def tmp_plot(*args, **kwargs):
    plt.plot([1,2,3,4,5],[1,2,3,4,5], *args, **kwargs)
tmp_plot(line = '-')
我得到这个错误:

TypeError: set_lineprops() got multiple values for keyword argument 'line'
但它可以很好地处理颜色参数

我正在使用matplotlib 1.4.3和python 2.7.7


有什么线索吗?

我猜matplotlib的内部除了调用者提供的参数外,还打开了一个内部参数字典,在不剥离重复项的情况下,您和matplot库内部都通过两条平行路径提供相同名称的单独关键字参数。

您可以在下面的回溯中看到Matplotlib在哪里添加了自己的
参数。这意味着您自己的关键字参数与Matplotlib自己在
set\u lineprops
调用中的关键字参数重复:

In [1]: import matplotlib.pyplot as plt
In [2]: plt.plot([1,2,3], [1,4,9], line='-')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-82-f298702afcfe> in <module>()
----> 1 plt.plot([1,2,3], [1,4,9], line='-')

/Users/xnx/anaconda/envs/py33/lib/python3.3/site-packages/matplotlib/pyplot.py in plot(*args, **kwargs)
   2985         ax.hold(hold)
   2986     try:
-> 2987         ret = ax.plot(*args, **kwargs)
   2988         draw_if_interactive()
   2989     finally:

/Users/xnx/anaconda/envs/py33/lib/python3.3/site-packages/matplotlib/axes.py in plot(self, *args, **kwargs)
   4137         lines = []
   4138 
-> 4139         for line in self._get_lines(*args, **kwargs):
   4140             self.add_line(line)
   4141             lines.append(line)

/Users/xnx/anaconda/envs/py33/lib/python3.3/site-packages/matplotlib/axes.py in _grab_next_args(self, *args, **kwargs)
    317                 return
    318             if len(remaining) <= 3:
--> 319                 for seg in self._plot_args(remaining, kwargs):
    320                     yield seg
    321                 return

/Users/xnx/anaconda/envs/py33/lib/python3.3/site-packages/matplotlib/axes.py in _plot_args(self, tup, kwargs)
    305         ncx, ncy = x.shape[1], y.shape[1]
    306         for j in range(max(ncx, ncy)):
--> 307             seg = func(x[:, j % ncx], y[:, j % ncy], kw, kwargs)
    308             ret.append(seg)
    309         return ret

/Users/xnx/anaconda/envs/py33/lib/python3.3/site-packages/matplotlib/axes.py in _makeline(self, x, y, kw, kwargs)
    257                             **kw
    258                             )
--> 259         self.set_lineprops(seg, **kwargs)
    260         return seg
    261 

TypeError: set_lineprops() got multiple values for argument 'line'