Matplotlib 中文化
但是这样的画面并不适合中文使用者,所以接下来试着将标题与标签输入中文,步骤如下
步骤 1. 下载需要的字体文件:以黑体(SimHei)为例,下载对应的字体文件 SimHei.ttf ,可以试着找自己电脑内是否有这个字体。
步骤 2. 将下载的字体文件放到指定目录下:执行以下代码,获取字体文件路径信息,每个人会根据自己的安装环境不同,而有所不同。
import matplotlib
print(matplotlib.matplotlib_fname())
输出结果如下:
C:\Users\user\AppData\Roaming\Python\Python37\site-packages\matplotlib\mpl-data\matplotlibrc
接着将 SimHei.ttf 复制到 C:\Users\user\AppData\Roaming\Python\Python37\site-packages\matplotlib\mpl-data\fonts\ttf 文件目录
步骤 3. 删除 matplotlib 的缓冲目录:执行以下代码,获取缓冲目录路径信息 (C:\Users\user.matplotlib),直接手动删除。
import matplotlib
print(matplotlib.get_cachedir())
输出结果如下:
C:\Users\user\.matplotlib
步骤 4. 根据步骤 2 所得到的 matplotlib 启动组态设定,去修改该文件 matplotlibrc,修改配置如下
# 去掉前面的 # 号
font.family : sans-serif
# 去掉前面的 # 号,并在冒号后面添加 SimHei
font.sans-serif : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif
# 3.去掉前面的 # 号,并将True改为False,解决保存图像是负号'-'显示为方块的问题
axes.unicode_minus : False
步骤 5. 重启 Visual Studio Code 中 Jupyter NoteBook 的 Python Kernel,好重新读取 Python 组态。
以下实例演示两个子图,一个为英文,一个为中文提示
import matplotlib.pyplot as plt
import numpy as np
# 创建一个 figure 对象,相当于一个空白的画布
figure = plt.figure()
# 在画布上添加一个坐标系,画布内有 2 x 1 个子图,回传第一个子图
axes1 = figure.add_subplot(2, 1, 1)
axes2 = figure.add_subplot(2, 1, 2)
# 准备画图的数据
x = [1, 2, 3, 4, 5, 6, 7]
y = [21, 27, 29, 32, 29, 28, 35]
# 设置画布的基本元素
axes1.set_xlabel('x label')
axes1.set_ylabel('y label')
axes1.set_title("title")
axes2.set_xlabel('星期日期')
axes2.set_ylabel('温度')
axes2.set_title("每周温度")
# 画图
plt.subplots_adjust(hspace=0.5) # hspace 用于控制高度的百分比,可以用作 subplot 之间垂直的间距
axes1.plot(x, y)
axes2.plot(x, y)
很明显的第二张图片对于使用者而言,相同的数据,但呈现出来的信息却截然不同。
图 4-2-3 具有中文的标题与标签的画布