legend图例方法有很多可以配置的参数和选项:
参数 | 说明 |
---|---|
loc | 图例的位置 |
prop | 字体参数 |
fontsize | 字体大小 |
markerscale | 图例标记与原始标记的相对大小 |
markerfirst | 如果为True,则图例标记位于图例标签的左侧 |
numpoints | 为线条图图例条目创建的标记点数 |
scatterpoints | 为散点图图例条目创建的标记点数 |
scatteryoffsets | 为散点图图例条目创建的标记的垂直偏移量 |
frameon | 是否显示图例边框 |
fancybox | 边框四个角是否有弧度 |
shadow | 控制是否在图例后面画一个阴影 |
framealpha | 图例边框的透明度 |
edgecolor | 边框颜色 |
facecolor | 背景色 |
ncol | 设置图例分为n列展示 |
borderpad | 图例边框的内边距 |
labelspacing | 图例条目之间的垂直间距 |
handlelength | 图例句柄的长度 |
handleheight | 图例句柄的高度 |
handletextpad | 图例句柄和文本之间的间距 |
borderaxespad | 轴与图例边框之间的距离 |
columnspacing | 列间距 |
title | 图例的标题 |
对于loc这个图例在坐标轴中的放置位置,有两种表示方法:数字或者字符串,其对应关系如下:
设置字体大小的参数fontsize可以使用整数或者浮点数,以及字符串‘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') #设置图例背景颜色,若无边框,参数无效 plt.legend(loc='best',title='figure') #去掉图例边框 plt.legend(loc='upper left', ncol=2, frameon=False) # 分两列显示,在左上角 plt.legend(fancybox=True,framealpha=1, shadow=True, borderpad=1)
默认情况下,图例会忽略那些不带标签的绘图,只为设置了label参数的绘图添加图例。
有时候我们可能需要在同一张图上显示多个图例。不过,用普通方法解决不了这个问题,标准的legend接口只能为一张图创建一个图例。但是我们可以通过plt.gca().add_artist()
方法(或者ax.add_artist()
),将我们先前创建过的图例用底层的接口重新添加上去。
lines = [] styles= ['-', '--','-.',':'] x = np.linspace(0,10,1000) for i in range(4): # 制造四条sin曲线 lines += plt.plot(x, np.sin(x-i*np.pi/2), styles[i]) plt.axis('equal') # 生成第一个图例,并保存引用 leg = plt.legend(lines[:2], ['line A', 'line B'], loc=1,frameon=False) # 生成第二个图例,这会让第一个图例被抹去 plt.legend(lines[2:], ['line C', 'line D'], loc=4,frameon=False) # gca方法获取当前坐标轴,再使用它的`add_artist`方法将第一个图例重新画上去 plt.gca().add_artist(leg)
plt.gca()和plt.axes()返回的是同一类型的实例,只不过用后者会抛出警告