在matplotlib Python2中生成自定义图例(以及仅图例)

时间:2015-09-07 19:13:51

标签: macos python-2.7 matplotlib

我正在尝试使用matplotlib制作自定义图例。 example in the matplotlib documentation对我的设置不起作用。这也没有。

from matplotlib import pyplot as plt
import matplotlib.patches as mpatches

fig, ax = plt.subplots()

patch1 = mpatches.Patch(color='#a6cee3', label='Blue')
patch2 = mpatches.Patch(color='#1f78b4', label='Bluerish')
patch3 = mpatches.Patch(color='#33a02c', label='Greener')
patch4 = mpatches.Patch(color='#fdbf6f', label='Kind of orange')
patch5 = mpatches.Patch(color='#ff7f00', label='Orange')

all_handles = (patch1, patch2, patch3, patch4, patch5)

leg = ax.legend(all_handles)

ax.add_artist(leg)
plt.show()

如何让它产生所需的传奇?

我正在使用Mac OSX 10.10.3,Python 2.7.6,Matplotlib 1.3.1。

编辑:@ xnx的解决方案适用于Python 3,如果使用Matplotlib 2.1.1,则适用于Python 2.7.11(感谢@DavidG)。

2 个答案:

答案 0 :(得分:3)

您应该明确地将handles参数设置为ax.legend

leg = ax.legend(handles=all_handles)

我认为你的代码的问题是,legend的第一个(位置)参数被认为是你想要标记的一系列对象而你没有任何对象。

enter image description here

答案 1 :(得分:0)

我有一个类似的问题。 这为我解决了这个问题:

leg = **plt**.legend(all_handles)