前言
当在pycharm中使用
matplotlib.pyplot
画图时,出现以下报错“findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei”,其原因是在macOs系统中缺少“SimHei”这种字体。若使用其他软件工具出现类似问题,也可加以参考。
解决办法
网上比较多的是法二这种方法(即自己下载导入字体册),这种方法可以从根本上解决系统缺少某种字体的问题。但本人一开始通过这种方法并没有什么效果,后找到了法一这种临时方法,如果你只是想让图片能够显示出中文采用这种方法足以。后续对法二进行进一步尝试,终于解决了问题。
一、法一
1、查看matplotlib支持的字体
中文乱码报错的原因就是matplotlib暂不支持该种字体,可在python控制台中通过以下代码查看目前所支持的字体,直接利用其中已有的字体即可完成中文显示。
import matplotlib
from matplotlib import font_manager
font_list=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in font_list:
print(i)
部分结果如下:
2、修改所使用的字体
将红框当中的第二句修改为第一句,即采用上一步圈出的“Heiti TC”字体,再运行即可。
二、法二
1、下载字体(该步需要特别注意!!!)
我一开始是在官网上搜索需要下载的字体Download SimHei Font - Free Font Download,但其实下载的字体Mac无法使用,故Mac用户需要特别注意,要下载Mac版本的字体!!!字体资源后续有空会放在评论区里。
2、安装字体(该步切勿遗漏!!!)
下载好字体后一定不要忘记点击.tff文件对字体进行安装,网上很多教程都没提到这步直接就移文件了。
先展示一下我一开始使用官网上下载的字体弹出的界面:
打开正确字体版本文件后的安装界面:
点击安装即可,安装完成后可在Mac自带的字体册中“我的字体”一栏看到我们添加的字体。
3、放入字体
1)获取字体路径
# 在python控制台中输入以下代码即可查看字体路径
import matplotlib
matplotlib.matplotlib_fname()
返回结果为:'/Users/zzx/anaconda3/envs/pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc'
2)将之前下载好的.tff字体放入以下路径中
/Users/zzx/anaconda3/envs/pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf
4、删除字体缓存
1)获取字体缓存路径
# 在python控制台中输入以下代码
import matplotlib
matplotlib.get_cachedir()
返回结果为:'/Users/zzx/.matplotlib'
2)删除该路径中的缓存
rm -rf /Users/zzx/.matplotlib
**5、修改
matplotlibrc
文件**
1)打开文件
2)修改文件
找到FONT这一栏部分
对红框部分进行修改
# 去掉前面的#号
font.family: sans-serif
# 去掉前面的#号,并在:号后面加上SimHei
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
再找到AXES一栏
对红框部分进行修改
# 去掉前面的#号,并将True改为False
axes.unicode_minus: False
最后重新运行应该就可以了,希望能够有所帮助。
附录:
SimHei MAC字体资源链接:
链接: https://pan.baidu.com/s/1D7aEsa3fZLjVuDM_o1A2iw?pwd=k2wg 提取码: k2wg
版权归原作者 zzxinn 所有, 如有侵权,请联系我们删除。