# 设置字体
# 言为心声,字为言表。文字是人类心中的画,也是人类心声视觉化的表现。不同的字体给人的直观感受不同,例如,宋体给人雅致、大气的感觉;黑体给人厚重、抢眼的感觉。由于每种字体具有不同的特点、使用场景,因此合适的字体可以对图表起到很好的修饰作用。合理地使用字体可以参考以下规则:
# 英文注释文本均使用 Arial、Helvetica 或 Times New Roman 字体。
中文注释文本均使用宋体或黑体,其中正文使用宋体,标题使用黑体。
图表注释文本的最佳字体大小为 8 磅。
字体的颜色与背景具有强对比度。
# 设置字体样式
# 在 matplollib 中,文本都是 text 模块的 Text 类 对象,可以通过之前介绍的 text() 、annotate() 、title() 等函数进行创建。Text 类中提供了一系列设置字体样式的属性,包括字体类别、字体大小、字体风格、字体角度等,这些属性及其说明如表 4-6 所示。
# 表4-6 的属性也可以作为 text() 、annotate() 、title() 函数的同名关键字参数,以便用户在创建文本的同时设置字体的样式。
例如,为折线图的线条添加注释文本,并设置字体的相关属性,代码如下。
plt.plot([1, 2, 3], [3, 4, 5])
plt.text(1.9, 3.75, 'y=x+2', bbox=dict(facecolor='y'), family='serif'
fontsize=18, fontsyle='nomal', rotation=-60)
# 以上示例添加的注释文本效果如图 4-8 所示。
# 实例4:未来 15天的最高气温和最低气温(设置字体样式)
# 2.1.2 节实例 1 的折线图既没有使用数据标记标注数据的位置,也没有使用注释文本标注数值,影响用户阅读体验。因此,这里为折线图添加数据标记和注释文本,并设置注释文本的字体样式,具体代码如下。
In [8]:
# 04_maximum_minimum_temperatures
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = np.arange(4, 19)
y_max = [32, 33, 34, 34, 33, 31, 30, 29, 30, 29, 26, 23, 21, 25, 31]
y_min = [19, 19, 20, 22, 22, 21, 22, 16, 18, 18, 17, 14, 15, 16, 16]
# 可以多次调用 plot() 函数
plt.plot(x, y_max, marker='o', label='最高温度')
plt.plot(x, y_min, marker='o',label='最低温度')
# 为图表添加注释并设置字体的样式
x_temp = 4
for y_h, y_l in zip(y_max, y_min):
plt.text(x_temp=0.3, y_h + 0.7, y_h, family='SimHei',
fontsize=, fontstyle='normal')
plt.text(x_temp=0.3, y_l + 0.7, y_l, family='SimHei',
fontsize=8, fontstyle='normal')
x_temp += 1
plt.title('未来 15 天最高气温和最低气温的走势')
plt.xlabel('日期')
plt.ylabel('温度($^\circ$C)')
plt.ylim(0, 40)
plt.legend()
pt.show()