Matplotlib 标题函数
在 Matplotlib 中,我们可以使用 title()、xlabel()、ylabel() 这 3 个函数来分别定义主标题、x 轴标题、y 轴标题。
语法:
plt.title(label, loc) # 主标题
plt.xlabel(label, loc) # x轴标题
plt.ylabel(label, loc) # y轴标题说明:
title()、xlabel()、ylabel() 这 3 个函数都有 label 和 loc 这 2 个参数。
label(必选):用于定义标题内容。loc(可选):用于定义标题位置。
不同函数的 loc 参数取值是不一样的,说明分别如下。
- 对于 title() 来说,它的 loc 参数取值有 3 种:'left'、'center'(默认值)、'right'。
- 对于 xlabel() 来说,它的 loc 参数取值有 3 种:'left'、'center'(默认值)、'right'。
- 对于 ylabel() 来说,它的 loc 参数取值有这 3 种:'top'、'center'(默认值)、'bottom'。
Matplotlib 标题示例
接下来,我们通过几个简单的例子来讲解一下 Matplotlib 是如何设置标题及其样式的。
示例 1:Matplotlib 设置标题
import matplotlib.pyplot as plt
# 解决中文乱码
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
# 解决负号不显示
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)
# 定义标题
plt.title('一个折线图')
plt.xlabel('x轴标题')
plt.ylabel('y轴标题')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
如果图表中包含中文,就必须使用 plt.rcParams['font.family'] 来设置中文字体,不然就会有乱码效果。如果图表中包含符号(-),也必须设置 plt.rcParams['axes.unicode_minus'] 为 False。其中,plt.rcParams 是 Matplotlib 的运行时配置参数,用于自定义各种属性,包括字体、线条样式等。
在实际工作中,我们都建议在绘图的一开始处,统一加上下面这两句代码。
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC'] # 解决中文乱码
plt.rcParams['axes.unicode_minus'] = False # 解决负号不显示示例 2:Matplotlib 改变主标题位置
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)
# 定义标题
plt.title('一个折线图', loc='left')
plt.xlabel('x轴标题')
plt.ylabel('y轴标题')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
在这个例子中,title() 函数中的 loc='left' 表示定义主标题的位置在左边。
示例 3:Matplotlib 设置轴标题位置
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)
# 定义标题
plt.title('一个折线图')
plt.xlabel('x轴标题', loc='right')
plt.ylabel('y轴标题', loc='top')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
x 轴标题默认是水平居中,如果想要将其定义在最右边,我们可以使用 loc='right' 来实现。而 y 轴标题默认是垂直居中,如果想要将其定义在最顶部,我们可以使用 loc='top' 来实现。
示例 4:Matplotlib 设置标题字体样式
import matplotlib.pyplot as plt
# 设置
plt.rcParams['font.family'] = ['SimHei', 'PingFang SC']
plt.rcParams['axes.unicode_minus'] = False
# 绘图
x = [1, 2, 3, 4]
y = [16, 15, 18, 17]
plt.plot(x, y)
# 定义标题
plt.title('一个折线图', fontsize=14, color='red')
plt.xlabel('x轴标题')
plt.ylabel('y轴标题')
# 显示
plt.show()运行之后,效果如下图所示。

分析:
标题本质上是一个文本,既然是文本,我们就可以使用 fontsize、color 等参数定义样式。其中 fontsize 用于定义字体大小,color 用于定义字体颜色。常用的字体样式参数还包括:
fontweight: 设置字体粗细,例如 'bold'。fontstyle: 设置字体样式,例如 'italic'(斜体)。fontfamily: 设置字体类型,例如 'Arial'。可以是一个包含多个字体名称的列表,Matplotlib 会按顺序查找可用的字体。
对于这个例子来说,fontsize=14 表示定义字体大小为 14 pt(points),color='red' 表示定义字体颜色为红色。当然了,小伙伴们也可以自行在 xlabel() 和 ylabel() 这两个函数中试一下。
此外,当我们需要为多个标题统一设置相同的复杂样式时,应该优先使用 fontdict 参数传入一个字典,这样可以使得代码更加简洁,比如:
font_style = {'fontsize': 14, 'color': 'red', 'fontweight': 'bold'}
plt.title('一个折线图', fontdict=font_style)