首页编程开发Matplotlib【数据可视化(Matplo...

【数据可视化(Matplotlib篇)】3.图例设置

的本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1jG-rGG4QMuZu0t0kEEl7SA?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Data_Visualization





在可视化过程中,当图表中有多条数据线时,就需要通过添加图例的方式来清楚表示各数据线的意义,让图表更清晰。
Matplotlib中可以使用legend()函数在图表的适当位置添加图例。

需要注意的是:如果想要创建图例,必须要在plot()函数内增加label标签来指定数据线。

01
参数介绍

legend()函数法格式如下:

plt.legend(*args,**kwargs)
*args表示可选的位置参数(positional arguments),**kwargs表示可选的关键词参数(keyword arguments),两者均不是必选参数,因此该函数可以不传入参数,此时Matplotlib会使用默认方式创建图例。
各可选参数说明如下:
参数
说明
loc

用于设定图例的位置,有下列设定方式(位置字符串与之对应的位置数字):

‘best’0

‘upperright’1

‘upperleft’2

‘lowerleft’3

‘lowerright’4

‘right’5(与‘centerright’相同)

‘centerleft’6

‘centerright’7

‘lowercenter’8

‘uppercenter’9

‘center’10

prop
图例字体的属性,默认是None。
bbox_to_anchor

可以是二元四元元组,且使用Axes坐标系统,用于设定图例的位置

第1个元素代表距离画布左侧的x轴长度的倍数的距离;第2个元素代表距离画布底部的y轴长度的倍数的距离;第3个元素代表x轴长度的倍数的线框长度;第4个元素代表y轴长度的倍数的线框宽度。

title
以设定图例的标题,默认是None。
ncol 图例的列数,默认为1
frameon 图例是否包含边框,默认为True
framealpha 图例边框的透明度,默认为0.8
edgecolor
图例边框颜色,默认为黑色
facecolor
图例的背景颜色,若无边框,该参数无效,默认为白色
shadow
图例阴影,默认为False
borderpad
图例边框的内间距,以字体大小为单位,默认为0.4
labelspacing
图例项目之间的间距,以字体大小为单位,默认为0.5
handleheight
图例左侧图像的高度,以字体大小为单位,默认为0.7
handlelength 图例左侧图像的宽度,以字体大小为单位,默认为2.0
handletextpad 左侧图例和右侧文字之间的距离,以字体大小为单位,默认为0.8
borderaxespad 图例和坐标轴之间的边距,以字体大小为单位,默认为0.5
columnspacing
两个横向图例间的距离,以字体大小为单位,默认为2.0
title_fontsize 图例字号
markerscale
图例标记大小与原始标记相对大小,默认为1
markerfirst 默认为True,此时图例标记位于图例标签左边
numpoints 线条图例建立标记点数,默认为1
scatterpoints
为散点图的图例项目建立标记点数,默认为1

02
默认值的实例

如果想要创建图例,必须要在plot()函数内增加label标签来指定数据线。
这里,我们使用的是matplotlib自带的TeX功能来实现对数字表达式的支持。用TeX对文本内容进行渲染,需要通过r”$$”的方式(即将表达式嵌入一对美元符号之间)。其中,r表示该字符串为raw strings,此时字符串会按照TeX规范进行解析。
x = np.arange(0 , 2.2 , 0.2)
y1 = x + 1
y2 = 2*x + 1
y3 = -3*x + 3


plt.plot(x,y1  , "-*", label=r"$x+1$")
plt.plot(x,y2  , "-o", label=r"$2x+1$")
plt.plot(x,y3  , "-^", label=r"$-3x+3$")

plt.legend()

plt.show()
可视化效果如下图所示:

03
图例样式调整实例

legend()函数中添加一些参数,对图例进行自定义设置,代码如下所示:
x = np.arange(0 , 2.2 , 0.2)
y1 = x + 1
y2 = 2*x + 1
y3 = -3*x + 3


plt.plot(x,y1  , "-*", label=r"$x+1$")
plt.plot(x,y2  , "-o", label=r"$2x+1$")
plt.plot(x,y3  , "-^", label=r"$-3x+3$")

plt.legend(loc="lower left" ,  # 设定图例的位置
           bbox_to_anchor=(0,1.1) ,  # 设定图例的位置
           ncol=3 ,  #  图例的列数
           title="function" ,  #  设定图例的标题
           edgecolor="b" ,  # 图例边框颜色
           facecolor="y" ,  # 图例的背景颜色
           shadow=True,  # 图例阴影
           columnspacing= 8,  # 两个横向图例间的距离
           borderaxespad = 0 # 图例和坐标轴之间的边距
          )

plt.show()
可视化效果如下图所示:


需要注意的是:
如果图例在画图区域内部,则可以通过位置字符串或数字的方式配置loc参数;
如果 bbox_to_anchor loc 配合使用,那么 bbox_to_anchor 设定的是图例在 axes 中的相对位置,默认边界范围是0到1,loc 设定的是以图例方块的哪个角为基准。
首先,要明确图表的坐标系统,图表的左下角位置为(0,0),右上角位置为(1,1)。那么,上面实例中,loc=”lower left”,即基准角为左下角,bbox_to_anchor=(0,1.1),即图例放置在最下角的(0,1.1)位置处,即如下图所示:


更多内容可以前往官网查看

https://matplotlib.org/stable/


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments