参考文档 https://www.cnblogs.com/lfri/p/12248629.html
官方文档 https://matplotlib.org/api/_as_gen/matplotlib.pyplot.legend.html
matplotlib plt.lengend
作用:用于给图像加图例。
1、语法参数如下:
matplotlib.pyplot.legend(*args, **kwargs)
2、参数
keyword | Description |
loc | Location code string, or tuple (see below).图例所有figure位置 |
prop | the font property字体参数 |
fontsize | the font size (used only if prop is not specified) |
markerscale | the relative size of legend markers vs. original 图例标记与原始标记的相对大小 |
markerfirst | If True (default), marker is to left of the label. 如果为True,则图例标记位于图例标签的左侧 |
numpoints | the number of points in the legend for line 为线条图图例条目创建的标记点数 |
scatterpoints | the number of points in the legend for scatter plot 为散点图图例条目创建的标记点数 |
scatteryoffsets | a list of yoffsets for scatter symbols in legend 为散点图图例条目创建的标记的垂直偏移量 |
frameon | If True, draw the legend on a patch (frame). 控制是否应在图例周围绘制框架 |
fancybox | If True, draw the frame with a round fancybox. 控制是否应在构成图例背景的FancyBboxPatch周围启用圆边 |
shadow | If True, draw a shadow behind legend. 控制是否在图例后面画一个阴 |
framealpha | Transparency of the frame. 控制图例框架的 Alpha 透明度 |
edgecolor | Frame edgecolor. |
facecolor | Frame facecolor. |
ncol | number of columns 设置图例分为n列展示 |
borderpad | the fractional whitespace inside the legend border 图例边框的内边距 |
labelspacing | the vertical space between the legend entries 图例条目之间的垂直间距 |
handlelength | the length of the legend handles 图例句柄的长度 |
handleheight | the height of the legend handles 图例句柄的高度 |
handletextpad | the pad between the legend handle and text 图例句柄和文本之间的间距 |
borderaxespad | the pad between the axes and legend border 轴与图例边框之间的距离 |
columnspacing | the spacing between columns 列间距 |
title | the legend title |
bbox_to_anchor | the bbox that the legend will be anchored.指定图例在轴的位置 |
bbox_transform | the transform for the bbox. transAxes if None. |
3、常用的几个参数:
3.1设置图例位置
plt.legend(loc='upper center')
loc的取值分别为:
0: ‘best' 1: ‘upper right' 2: ‘upper left' 3: ‘lower left' | 4: ‘lower right' 5: ‘right' 6: ‘center left' | 7: ‘center right' 8: ‘lower center' 9: ‘upper center' 10: ‘center' |
3.2设置图例字体大小
fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
3.3设置图例边框及背景
plt.legend(loc='best',frameon=False) #去掉图例边框
plt.legend(loc='best',edgecolor='blue') #设置图例边框颜色
plt.legend(loc='best',facecolor='blue') #设置图例背景颜色,若无边框,参数无效
对于边框还可以采用面向对象方式:
legend = plt.legend(["First", "Second"])
frame = legend.get_frame()
frame.set_facecolor('blue')
3.4设置图例标题
legend = plt.legend(["CH", "US"], title='China VS Us')
3.5设置图例名字及对应关系
legend = plt.legend([p1, p2], ["CH", "US"])
4、实例
4.1 实例1
from matplotlib import pyplot as plt
import numpy as np
train_x = np.linspace(-1, 1, 100)
train_y_1 = 2 * train_x + np.random.rand(*train_x.shape) * 0.3
train_y_2 = train_x ** 2 + np.random.randn(*train_x.shape) * 0.3
# 画散点图
p1 = plt.scatter(train_x, train_y_1, c='red', marker='v')
p2 = plt.scatter(train_x, train_y_2, c='blue', marker='o')
# 设置图例标题title,
# 设置图例名字及对应关系[p1, p2], ["CH", "US"]
# 设置图例背景颜色facecolor
# 设置图例位置loc
legend = plt.legend([p1, p2], ["CH", "US"],
title='China VS Us', facecolor='y',
loc='lower right')
plt.show()
运行结果
4.2 实例2
import numpy as np
import matplotlib.pyplot as plt
X = np.linspace(0, 2*np.pi, 32, endpoint=True)
C,S = np.cos(X), np.sin(X)
#plt.plot(X,C)
#plt.plot(X,S)
plt.plot(X, C, 'go--', color='blue', label='cos')
plt.plot(X,S, color='green', marker='o', linestyle='dashed', label='sin')
# 一个是fmt,一个是线属性,但是它们的格式是一样的
plt.legend(loc='lower left')
plt.show()
运行结果