Python Matplotlib 在 Ubuntu 中显示中文字体的解决方案
本文介绍在Ubuntu系统中解决Python Matplotlib中文显示乱码的方法。涵盖系统级安装中文字体、Python代码中指定默认字体、直接加载本地字体文件以及将字体复制到Matplotlib目录等四种方案,帮助开发者在无法安装系统字体或Docker环境下实现图表中文正常渲染。
Python Matplotlib 中文显示问题概述
1. 说明
本文主要解决在Ubuntu操作系统中,Python使用Matplotlib库绘图时无法正确显示中文的问题,特别是在系统字体受限或无法安装系统字体的场景下。
系统级安装中文字体
2. 在系统中安装字体
通过命令 $ fc-list :lang=zh # 可以查看当前系统中已安装的中文字体名称及其路径。需要注意的是,中文字体文件通常比英文字体文件大得多。
若系统中没有中文字体,可以通过 apt-get 命令进行安装,具体操作步骤如下:
$ apt-cache search font|grep Chinese # 查看可安装的中文字体
$ sudo apt-get install fonts-wqy-zenhei # 安装字体, 一般字体会被安装到/usr/share/fonts/的某个子目录下,也可以从windows中把ttf,ttc复制到fonts目录下。
$ cd /usr/share/fonts/truetype/xxx/ # cd到字体安装目录下
$ sudo mkfontscale
$ sudo mkfontdir
$ fc-cache -v # 更新字体
$ fc-list :lang=zh # 此时就可以看到新装的字体
Python代码中指定默认字体
3. 在Python中指定字体
完成系统字体安装后,Python即可调用该字体。只需在Python脚本中设置默认字体参数即可生效。
plt.rcParams['font.sans-serif'] = ['Droid Sans Japanese']
以下代码可用于列出Python环境中可用的系统字体名称及其对应的文件路径:
from os import path
from matplotlib.font_manager import fontManager
for i in fontManager.ttflist:
print(i.fname, i.name)
程序中直接加载本地字体文件
4. 在程序中指定字体文件
若因权限限制无法安装系统字体,可以直接在程序中指定字体文件路径来加载字体。具体实现方法如下:
zhfont = mpl.font_manager.FontProperties(fname='../../font/wqy-zenhei.ttc')
plt.xlabel(u'测试一下 ', fontsize=20, fontproperties=zhfont)
注意:在使用Docker配合Notebook进行开发时,必须确保字体文件存放在容器内有权访问的路径下。
手动配置Matplotlib字体目录
5. 为Python安装新字体
将字体文件复制到 /usr/local/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/ 目录下,随后删除 /root/.cache/matplotlib/ 缓存目录,即可使新字体生效。
总结
以上介绍了在Python Matplotlib中显示中文字体的几种常用方法,希望能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持! 如果觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









