解决 Matplotlib 中文显示问题
一、字体缺失中文字体导致的显示错误
当 Matplotlib 提示找不到中文字体时,说明其字体库中缺少必要的中文字体文件,需要手动添加所需字体。

步骤 1:准备中文字体文件
-
推荐下载以下常用中文字体(点击即可获取):
(如需其他字体,可自行下载 TrueType 格式的中文字体文件)
-
将下载的字体文件移动到你的工作空间中

步骤 2:安装字体到 Matplotlib 字体库
-
首先进入 Matplotlib 的字体目录,在终端中执行:
cd /root/.pyenv/versions/3.11.1/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf注意:这里修改的 3.11.1 python 版本,如需修改其他版本的需根据类似目录找到字体路径
-
将工作空间中的字体文件移动到该目录,使用mv命令:
mv /workspace/字体文件名.ttf .例如移动黑体文件:
mv /workspace/SimHei.ttf .
步骤 3:验证字体安装
在终端中执行 ll 命令,查看字体文件是否已成功移动到字体目录中,确认文件名正确显示。

二、字体存在但中文无法正常显示
若已确认存在中文字体但仍显示乱码或方块,通常是由于 Matplotlib 默认字体设置未包含中文字体导致的。

方案 1:临时配置(仅当前代码文件有效)
在代码开头添加字体设置,立即生效且不影响全局配置:
import matplotlib.pyplot as plt
# 设置字体,支持中文显示
plt.rcParams["font.family"] = ["SimHei", "SimSun", "Microsoft-YaHei"]
# 解决负号显示问题(可选)
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号
添加上述代码后,后续绘图中的中文标题、标签等即可正常显示。
方案 2:永久设置(修改配置文件)
通过修改 Matplotlib 配置文件,使其默认支持中文显示: 1, 首先获取配置文件路径,在 Jupyter 中执行:
import matplotlib
print(matplotlib.matplotlib_fname())
执行后会输出类似 /xxx/matplotlibrc 的文件路径

-
打开该配置文件(可通过全局搜索来执行)

-
找到并修改以下配置(约 269 行附近):
# 字体族设置,添加中文字体
font.family : sans-serif
# 字体列表,优先使用前面的字体
font.sans-serif : SimHei, SimSun, Microsoft-YaHei
# 解决负号显示问题
axes.unicode_minus : False
-
保存修改并重启 Jupyter 内核,配置即可生效

完成以上设置后,Matplotlib 绘图时该工作空间将自动使用中文字体,无需每次手动配置。