在 Linux 系统里用 Python 的 matplotlib 做数据可视化,中文显示成方块或乱码是常遇到的坑。多半是因为系统没装中文字体,或者库没指向正确的字体文件。其实只要按下面几个步骤走一遍,基本就能彻底解决。
更新系统软件源
动手安装新东西前,先把系统的软件包列表刷新一下,这样能确保装到最新版本的字体。终端里执行:
sudo apt update
这条命令会从配置好的源服务器拉取最新的包信息。执行时可能需要输入管理员密码,输完等它跑完就行。
安装常用中文字体
Linux 默认通常不带中文字体,得手动装一套开源的。推荐直接装文泉驿系列,覆盖日常需求没问题:
sudo apt install fonts-wqy-zenhei fonts-wqy-microhei fonts-arphic-ukai fonts-arphic-uming
这里包含的字体各有侧重:
- 文泉驿正黑(fonts-wqy-zenhei):清晰易读的黑体
- 文泉驿微米黑(fonts-wqy-microhei):小字号显示效果不错
- 文鼎中楷(fonts-arphic-ukai):经典楷体
- 文鼎明体(fonts-arphic-uming):端庄的宋体类
装完这些,系统就有了处理中文的基础能力。
配置 matplotlib 字体参数
字体装好了,还得告诉 matplotlib 去用哪个。在代码里加几句全局设置就行:
import matplotlib.pyplot as plt
# 指定使用文泉驿微米黑,如果报错可尝试换成 WenQuanYi Zen Hei
plt.rcParams["font.family"] = ["WenQuanYi Micro Hei"]
# 解决负号显示问题,防止变成方块
plt.rcParams['axes.unicode_minus'] = False
这么写之后,后续所有图表都会自动应用这个字体。如果想换别的已安装字体,把 WenQuanYi Micro Hei 替换成对应的名字,比如 AR PL UKai CN 也可以。
验证设置是否生效
改完配置别急着走,先跑个测试脚本看看效果:
import matplotlib.pyplot as plt
# 再次确认字体设置
plt.rcParams["font.family"] = ["WenQuanYi Micro Hei"]
plt.rcParams['axes.unicode_minus'] = False
# 画个简单的图试试
plt.figure(figsize=(8, 5))
plt.plot([1, 2, 3, 4], [1, 4, , ], )
plt.title()
plt.xlabel()
plt.ylabel()
plt.text(, , )
plt.grid()
plt.show()

