mac环境使用Matplotlab.pyplot的中文字体问题

报错信息

findfont: Font family ['sans-serif'] not found.

missing from current font.

报错原因

没有中文字体

解决方案及步骤

本方案是下载字体放入matplotlib的字体路径下面,一劳永逸的做法。

1. 下载字体

http://www.fontpalace.com/font-download/SimHei/

2. 复制字体到matplotlib字体目录下

matplotlib字体目录在哪?根据你的python路径查找,或者查看报错中给出的路径。我使用的anaconda的python环境,路径:

cp SimHei.ttf /anaconda2/envs/py3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf

3. 修改matplotlibrc配置文件

查找matplotlibrc配置文件位置的方法:终端运行python,执行如下命令

In [1]: import matplotlib
   ...: matplotlib.matplotlib_fname()
   ...:
Out[1]: '//anaconda2/envs/py3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc'

修改matplotlibrc文件:

  1. 增加font.family : sans-serif,文件可能已经有这一项了,只是注释掉了,把注释去掉即可。
  2. font.sans-serif中增加刚下载的字体,如果文件里本来没有这一项,增加这一项,效果如下:
    font.sans-serif: SimHei(新安装的字体), DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
    
    

3 . axes.unicode_minus:False这一项如果已经有了,可以搜索一下去掉注释,把True更改为False,更改后。

最终效果:

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

4. 清除matplotlib缓存

查找matplotlib缓存文件位置的方法:打开python终端,运行如下代码

In [2]: import matplotlib
   ...: matplotlib.get_cachedir()
   Out[2]: '/Users/wangshiyao/.matplotlib'

进入路径删除缓存:

rm -rf ~/.matplotlib/*.cache
rm fontList.json

5. 重启python或重启电脑

我重启python和jupyter notebook均没有效果,重启了电脑之后生效了。

你可能感兴趣的:(python数据分析)