【Matplotlib】 增加图例

来源:互联网 发布:三国杀淘宝永久武将 编辑:程序博客网 时间:2024/05/16 09:57

【Matplotlib】 增加图例

相关文档:

  • Legend guide

  • legend() command

  • Legend API

控制图例入口

无参调用 legend() 会自动获取图例 handles 以及相关的 labels。其对应于以下代码:

handles, labels = ax.get_legend_handles_labels()ax.legend(handles, labels)

get_legend_handles_labels()方法返回 存在于图像中的 handles/artists 列表,这些图像可以用来生成结果图例中的入口。值得注意的是并不是所有的 artists 都可以被添加到图例中。

为了全部控制添加到图例中的内容,通常直接传递适量的 handles 给legend()函数。

line_up, = plt.plot([1,2,3], label='Line 2')line_down, = plt.plot([3,2,1], label='Line 1')plt.legend(handles=[line_up, line_down])

某些情况下,不太可能设置 handle 的 label,所以需要传递 labels 的列表给 legend()。

line_up, = plt.plot([1,2,3], label='Line 2')line_down, = plt.plot([3,2,1], label='Line 1')plt.legend([line_up, line_down], ['Line Up', 'Line Down'])

综合例子如下:

import numpy as npimport matplotlib.pyplot as pltplt.figure(figsize=(8,5), dpi=80)plt.subplot(111)X = np.linspace(-np.pi, np.pi, 256,endpoint=True)C = np.cos(X)S = np.sin(X)plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")plt.plot(X, S, color="red", linewidth=2.5, linestyle="-",  label="sine")ax = plt.gca()ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')ax.xaxis.set_ticks_position('bottom')ax.spines['bottom'].set_position(('data',0))ax.yaxis.set_ticks_position('left')ax.spines['left'].set_position(('data',0))plt.xlim(X.min() * 1.1, X.max() * 1.1)plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],  [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])plt.ylim(C.min() * 1.1, C.max() * 1.1)plt.yticks([-1, +1],  [r'$-1$', r'$+1$'])plt.legend(loc='upper left')plt.show()

图像表现形式如下:

0 0