matplotlib图例显示" 10位艺术家的容器对象"而不是标签

时间:2015-02-28 19:58:25

标签: matplotlib legend

下面的代码正确生成了图表和图例,但图例并未显示指定的label文本,而是显示“10位艺术家的容器对象”。

ax = plt.subplot(212)

plt.tight_layout()

l1= plt.bar(X+0.25, Y1, 0.45, align='center', color='r', label='A', edgecolor='black', hatch="/")
l2= plt.bar(X,      Y2, 0.45, align='center', color='b', label='N',hatch='o', fill=False)

ax.autoscale(tight=True)

plt.xticks(X, X_values)

ymax1 = max(Y1) + 1
ymax2 = max(Y2) + 1

ymax = max(ymax1,ymax2)+1
plt.ylim(0, ymax)

plt.grid(True)

plt.legend([l1,l2], loc='upper right', prop={'size':20})

输出如下所示:

Plot showing the missing labels

如何在图例上正确显示每个栏的标签(在plt.bar()功能中指定)?

1 个答案:

答案 0 :(得分:1)

问题源于混合使用plt.legend()的两种方法。您有两种选择:

  1. 手动指定图例的标签
  2. 使用ax.get_legend_handles_labels()填入您传递给label的{​​{1}}参数
  3. 要手动指定标签,请将它们作为第二个参数传递给plt.bar(),如下所示:

    plt.legend()

    如果您想要自动填充图例,可以使用以下内容在图中查找可映射的对象及其标签:

    plt.legend([l1,l2], ["A", "N"], loc='upper right', prop={'size':20})