解决 Matplotlib 在 Linux 环境的中文乱码问题
环境:
Debian Linux 12,基本命令行系统,无 GNOME / KDE
Matplotlib 3.7.5
JupyterLab 4.0.5
Python 3.11
默认情况下,Matplotlib 输出的图中,中文是乱码。
使用 文泉驿微米黑 中文字体。
创建用户的字体目录。
mkdir -p ~/.local/share/fonts
拷贝文泉驿微米黑字体,如
WenQuanWeiMiHei.ttf
,至上述字体目录字体可从网上下载。
修改字体文件权限
chmod 644 ~/.local/share/fonts/*.ttf
安装
fontconfig
软件包command -v fc-cache > /dev/null || sudo apt-get install -y fontconfig
更新字体缓存
# 通常 Debian 会监控字体目录,不需要手动执行 fc-cache
此命令来自
fontconfig
。之后可执行
fc-list
命令查看输出的字体列表中是否包含文泉驿微米黑字体。Matplotlib 代码中使用中文字体
import matplotlib.pyplot as plt # ... plt.rcParams[ "font.sans-serif" ] = [ "WenQuanYi Micro Hei" ]
如果已经启动过 JupyterLab, 删除 ~/.cache/matplotlib/fontlist-v330.json 文件,重启 JupyterLab 的 Python 内核,或重启 JupyterLab。
刷新 Matplotlib / JupyterLab 字体缓存
删除字体缓存文件
Linux / macOS:
~/.matplotlib/fontlist-v330.json
Windows:
C:\Users\<用户名>\.matplotlib\fontlist-v330.json
Matplotlib 3.7.5 之前的字体缓存文件可能不叫
fontlist-v330.json
。重启 JupyterLab 的内核,或重启 JupyterLab。