原文链接地址如下:
https://blog.csdn.net/mighty13/article/details/113820798
matplotlib可以为可见对象(Artist,比如线条、形状)添加图例(legend)。官方建议使用pyplot模块的legend函数简便的创建图例,而不是使用底层的matplotlib.legend类构造图例。
函数签名为matplotlib.pyplot.legend(*args, **kwargs)
使用图例的基础有两个:
调用方式有三种:
演示legend函数的三种调用方式。
import matplotlib.pyplot as plt
plt.figure(figsize=(13,4))
plt.subplot(131)
# legend()调用方式
plt.plot([1, 1],label='1')
plt.plot([2, 2],label='2')
plt.legend()
plt.subplot(132)
# legend(labels)调用方式
plt.plot([1, 1])
plt.plot([2, 2])
plt.legend(['1','2'])
plt.subplot(133)
# legend(handles, labels)调用方式
# 注意plot函数返回的为Line2D对象列表
line1, = plt.plot([1, 1])
line2, = plt.plot([2, 2])
print(type(line1))
plt.legend((line1,line2),['1st','2nd'])
plt.show()
legend()其他参数
loc:图例显示的位置,类型为浮点数或字符串,默认值为rcParams[“legend.loc”] ( ‘best’)。浮点数和字符串之间具有以下对应关系:
#legend.loc: best
#legend.frameon: True # if True, draw the legend on a background patch
#legend.framealpha: 0.8 # legend patch transparency
#legend.facecolor: inherit # inherit from axes.facecolor; or color spec
#legend.edgecolor: 0.8 # background patch boundary color
#legend.fancybox: True # if True, use a rounded box for the
# legend background, else a rectangle
#legend.shadow: False # if True, give background a shadow effect
#legend.numpoints: 1 # the number of marker points in the legend line
#legend.scatterpoints: 1 # number of scatter points
#legend.markerscale: 1.0 # the relative size of legend markers vs. original
#legend.fontsize: medium
#legend.title_fontsize: None # None sets to the same as the default axes.
## Dimensions as fraction of fontsize:
#legend.borderpad: 0.4 # border whitespace
#legend.labelspacing: 0.5 # the vertical space between the legend entries
#legend.handlelength: 2.0 # the length of the legend lines
#legend.handleheight: 0.7 # the height of the legend handle
#legend.handletextpad: 0.8 # the space between the legend line and legend text
#legend.borderaxespad: 0.5 # the border between the axes and legend edge
#legend.columnspacing: 2.0 # column separation
对比自定义图例外观与默认图例外观。
左图设置了以下图例外观:标题为’legends’(默认为空),图例显示为2列(默认为1列),标签显示在左边(默认为左侧),图例标记点显示为2个(默认为1个),图例区域矩形为直角(默认为圆角),图例背景色为灰色,图例边缘为红色,图例显示阴影(默认无)。
import matplotlib.pyplot as plt
line1, = plt.plot([1, 1], marker='o')
line2, = plt.plot([2, 2])
plt.legend((line1, line2), ['1st', '2nd'], loc=0,
title='legends', ncol=2, markerfirst=False,
numpoints=2, frameon=True, fancybox=True,
facecolor='gray', edgecolor='r', shadow=True)
plt.show()