参考文档 https://www.cnblogs.com/lfri/p/12248629.html
官方文档 https://matplotlib.org/api/_as_gen/matplotlib.pyplot.legend.html
matplotlib plt.lengend
作用:用于给图像加图例。
matplotlib.pyplot.legend(*args, **kwargs)
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. |
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' |
fontsize : int or float or {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}
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')
legend = plt.legend(["CH", "US"], title='China VS Us')
legend = plt.legend([p1, p2], ["CH", "US"])
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()
运行结果
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()
运行结果