当前位置: 代码迷 >> 综合 >> 用matplotlib绘图出现中文乱码UserWarning: findfont: Font family [‘sans-serif‘] not found.
  详细解决方案

用matplotlib绘图出现中文乱码UserWarning: findfont: Font family [‘sans-serif‘] not found.

热度:32   发布时间:2023-11-24 13:30:05.0

matplotlib 绘图中文乱码

下载中文字体并放到指定目录中
下载地址
查看自己所用matplotlib库所在路径,把字体文件放入相应的字体文件夹中

import matplotlib 
print(matplotlib.matplotlib_fname())

在这里插入图片描述
在/home/xt/anaconda3/envs/dip/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf目录中,字体放在这个目录中还需要修改配置文件,这个文件就是matplotlibrc
matplotlibrc 在mpl-data路径下面,粘贴下列到配置文件

font.family         : sans-serif
font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus  : False   #解决负号’-'显示为方块的问题

运行的代码里面加入

matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus'] = False

再去把系统的缓存清理掉,这个缓存文件夹在ubuntu里面是不可见的,但是可用终端进去
缓存文件在/home/用户名
在这个路径下cd 到缓存文件夹
windows用户应该在user文件夹中,.matplotlib

cd .cache/matplotlib
然后删除该文件夹下的文件
sudo rm -rf  文件名

然后跑代码,如果不行,试试下面的
修改font_manager.py
/home/xt/anaconda3/envs/dip/lib/python3.6/site-packages/matplotlib/ 下可以找到这个

具体修改操作是:打开文件后,直接找 self.defaultFamily,进行修改为我们的 SimHei 文件,注意那个 afm 要保留,它是另一种字体文件。
将文件中的DejaVu Sans修改成SimHei:
在这里插入图片描述

还需要找到配置文件中找到DejaVuSans.ttf并将其修改为SimHei.ttf:
在这里插入图片描述
参考博客:https://blog.csdn.net/yl4548/article/details/107232170/

  相关解决方案