下面的代码正确生成了图表和图例,但图例并未显示指定的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})
输出如下所示:
如何在图例上正确显示每个栏的标签(在plt.bar()
功能中指定)?
答案 0 :(得分:1)
问题源于混合使用plt.legend()
的两种方法。您有两种选择:
ax.get_legend_handles_labels()
填入您传递给label
的{{1}}参数要手动指定标签,请将它们作为第二个参数传递给plt.bar()
,如下所示:
plt.legend()
如果您想要自动填充图例,可以使用以下内容在图中查找可映射的对象及其标签:
plt.legend([l1,l2], ["A", "N"], loc='upper right', prop={'size':20})