linux 环境下matplotlib 画图时不支持中文解决方案

Posted 丘文波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 环境下matplotlib 画图时不支持中文解决方案相关的知识,希望对你有一定的参考价值。

linux 环境下matplotlib 画图时不支持中文解决方案

1. 代码上设置一下你需要使用的代码

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

如果通过上面的设置成功显示中文就最nice了,但如果上面设置之后,还是会报错

Font family [‘sans-serif’] not found.Falling back to DejaVu Sans

2. 检查是否缺少字体

该错误说明很大概率是缺少了SimHei这种字体,可以通过如下方式查看matplotlib中已有字体有哪些

import matplotlib.pyplot as plt
from matplotlib import font_manager

for font in font_manager.fontManager.ttflist:
    # 查看字体名以及对应的字体文件名
    print(font.name, '-', font.fname)

查看一下全部字体名称,看一下你需要使用的字体名称是否在其中,如果不在其中就需要进行添加。

matplotlib的字体来自两个部分,一个是matplotlib自带的字体,还有一个是系统自带的字体。

注意:字体名称字体文件名是两个不同概念,比如上图中微软雅黑的字体名称叫“Microsoft YaHei” 但是其字体文件名叫“wryh.ttf”.
在代码中进行设置的时候,需要使用字体名称

3. 下载字体文件并放到系统字体目录下

可以从该地址下载黑体字体文件

可以自己在网上下载黑体字体“SimHei”对应的文件,然后添加到系统字体所在目录。系统字体所在目录可以通过命令 “fc list”知道

将黑体字体文件放进去系统字体目录:

再执行一下代码就可以看到字体已经加进去

import matplotlib.pyplot as plt
from matplotlib import font_manager

for font in font_manager.fontManager.ttflist:
    # 查看字体名以及对应的字体文件名
    print(font.name, '-', font.fname)

5.生效

删除一下之前的旧缓存来生成新的缓存

# python 终端获取缓存路径
import matplotlib
print(matplotlib.get_cachedir())
# /root/.cache/matplotlib

删除缓冲目录

rm -rf /root/.cache/matplotlib

最后运行一下你的代码,就可以正常显示中文字体了。

参考博客

matplotlib对中文的支持(Font family [‘sans-serif’] not found.Falling back to DejaVu Sans)

以上是关于linux 环境下matplotlib 画图时不支持中文解决方案的主要内容,如果未能解决你的问题,请参考以下文章

linux 环境下matplotlib 画图时不支持中文解决方案

linux 环境下matplotlib 画图时不支持中文解决方案

用matplotlib画图,但是显示不出来是怎么回事

matplotlib 出图示例

Pyqt+matplotlib 实现实时画图案例

Pyqt+matplotlib 实现实时画图案例