当前位置: 首页 > 工具软件 > DejaVu Fonts > 使用案例 >

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

禹德水
2023-12-01

一、问题描述

import matplotlib.pyplot as plt

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

使用matplotlib画图,在Windows下正常,在linux环境下中文乱码
Font family [‘sans-serif’] not found.Falling back to DejaVu Sans

二、解决方案

在linux环境中的matplotlib里装入SIMHEI.TTF字体即可

三、解决步骤

1、点击下载SIMHEI.TTF字体
2、把字体放到指定目录

# python 终端获取路径
import matplotlib    
print(matplotlib.matplotlib_fname())
#/root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

# 下载好的SIMHEI.TTF放到该目录下 
# (shell)
mv ./SIMHEI.TTF /root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/

3、删除matplotlib的缓冲目录

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

# 删除缓冲目录
# (shell)
rm -rf /root/.cache/matplotlib

4、修改matplotlibrc文件

# (shell)
vim /root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

# 修改的内容
 font.family         : sans-serif   
 # 去掉前面的#     
 font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif  
 # 去掉前面的#,并在冒号后面添加SimHei
 axes.unicode_minus  : False
 # 去掉前面的#,并将True改为False

5、重新测试,问题搞定。

 类似资料: