WIndows系统findfont: Font family [‘sans-serif‘] not found解决方法
某些python程序运行matplotlib模块绘图会出现 findfont: Font family [‘sans-serif‘] not found 的报错,原因是matplotlib模块缺乏某些字体。如果知道缺乏什么字体,可以安装对应的字体库即可。下面以安装 【noto 思源黑体】字体为例讲解字体安装过程。
第一步:下载字体 。
打开网页 https://1603.ieph.net:5001/sharing/eiUmHNVE9 ,下载NotoSansCJKSCv2.001.zip字体。
第二步:安装字体。
由于我们是用python中matplotlib模块绘图,而微软雅黑字体在windows 10 系统中与matplotlib 不兼容。所以需要将字体安装到两个地方,一个是系统中,一个是matplotlib模块的字体库中。
安装至系统:解压缩 NotoSansCJKSCv2.001.zip文件,安装NotoSansCJKsc-Bold.otf 字体(其它字体安装方法类似),双击文件打开即可看见安装选项,安装即可。
安装完成后可以通过系统字体查询关键字:noto,可以看到已经安装成功。
点击相应字体可以看见该字体的安装路径C:\Users\HBHH\AppData\Local\Microsoft\Windows\Fonts
安装至matplotlib模块的字体库:将字体文件NotoSansCJKsc-Bold.otf复制到matplotlib字体库文件夹中
第三步:设置matplotlib配置文件
为了使matplotlib模块中该字体库生效,需要 删除 ~/.cache/matplotlib的缓冲目录。具体删除方法如下,windows系统下打开用户文件目录,删除 .matplotlib文件夹
然后修改H:\software\Anaconda3\Lib\site-packages\matplotlib\mpl-data中的 matplotlibrc文件
用notepad++打开 matplotlibrc 文件,修改一共三个地方:
分别是:
font.family : sans-serif
font.sans-serif : Noto Sans SC,Noto Sans CJK SC,SimHei,DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus : False ## use unicode for the minus symbol
修改一:将font.family前面的 # 去掉。
修改二:在font.sans-serif列表中添加字库。
修改三:将axes.unicode_minus 中的 True 改为 False
修改完这三处后保存文件。
然后重启python内核就可以了。