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或更低版本。在任何情况下,不支持将标签作为关键字参数传递给
因此,你给
1 | plt.legend(pie_labels, loc="best") |
(这里的逻辑是,如果给定一个位置参数,它应该是标签。)
当然,另一个选项是更新到Matplotlib的新版本(高于1.5),在该版本中,句柄和标签可以作为关键字参数传递,并且问题中的代码是有效的。
1 | plt.legend(loc="best", labels=pie_labels) |