关于python:matplotlib标签的关键字参数的多个值

Multiple values for keyword argument for matplotlib labels

运行饼图的pandas/matplotlib代码示例,会出现关键字错误的多个值。我尝试从.Legend方法中删除标签。它确实有效,但是我的标签不是我想要的。我能做什么?

1
2
3
4
5
6
7
8
pie_labels=['a', 'b', 'c', 'd']
counts = pd.Series(pie_sizes, index=pie_labels)
explode = (0, .2, .3, .4)
counts.plot(kind='pie', fontsize=17, explode=explode, autopct='%1.1f%%')
plt.axis('equal')
plt.ylabel('')
plt.legend(loc="best", labels=pie_labels)
plt.show(block=True)

Traceback (most recent call last): File"piechart.py", line 23, in

plt.legend(loc="best", labels=pie_labels) File"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py",
line 3381, in legend
ret = gca().legend(*args, **kwargs) File"/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py",
line 4778, in legend
self.legend_ = mlegend.Legend(self, handles, labels, **kwargs) TypeError: init() got multiple values for keyword argument
'labels'


您似乎正在运行Matplotlib 1.3或更低版本。在任何情况下,不支持将标签作为关键字参数传递给legend的版本。

因此,你给legend的电话需要

1
plt.legend(pie_labels, loc="best")

(这里的逻辑是,如果给定一个位置参数,它应该是标签。)

当然,另一个选项是更新到Matplotlib的新版本(高于1.5),在该版本中,句柄和标签可以作为关键字参数传递,并且问题中的代码是有效的。

1
plt.legend(loc="best", labels=pie_labels)