如何让 python matplotlib 库正常显示中文

背景

最近在学习 Python 著名的绘图包 matplotlib 时,运行 Python 脚本的时候会报错,大致报错信息如下:

Font family [‘sans-serif’] not found. Falling back to DejaVu Sans.

参考网上的一些解决办法后,自己也总结了一下,下面就详细讲讲。

解决步骤

  1. 首选,需要 simhei.ttf 文件
    可以 戳这里 去获得 simhei.ttf 文件

  2. 将 simhei.ttf 拷贝到 matplotlib 安装路径下
    如果不知道 matplotlib 的安装路径该怎么办呢?哈哈,没关系,我们可以通过 matplotlib.matplotlib_fname() 来获得 matplotlib 的安装路径。

    通过命令行进入 Python,运行如下代码:

    import matplotlib
    print(matplotlib.matplotlib_fname()) # 将会获得 matplotlib 的安装路径
    

    图例: 获得 matplotlib 的安装路径
    Ok,这样我们就得到了 matplotlib 的安装路径(/Users/eric/Library/Python/3.7/lib/python/site-packages/matplotlib),剩下的事情就是将 simhei.ttf 拷贝到 /Users/eric/Library/Python/3.7/lib/python/site-packages/matplotlib 了

  3. 删除 ~/.cache/matplotlib 的缓冲目录(注:如果没有就不必删除了)

  4. 修改 matplotlibrc 文件

    在命令行执行 vim 编辑 matplotlibrc 文件

    vim /Users/eric/Library/Python/3.7/lib/python/site-packages/matplotlib/mpl-data/matplotlibrc
    

    要修改的地方有 3 处:

    • font.family 设置为 font.sans-serif
    • 添加 “SimHei” 即宋体到字库族(font.sans-serif)列表中
    • 为解决负号(’-’ )显示为方块的问题,将 axes.unicode_minus 的值改为 False

    给出 2 张修改 matplotlibrc 文件的截图,如下:
    修改font.family、font.sans-serif 修改axes.unicode_minus

  5. 网上有一些参考就只止步于【步骤4】,但是运行 Python 脚本的时候会报错。到底还差了什么呢?后来才知道,原来问题在于改了配置之后并不会自动生效,我们还需要重新加载字体。那么,如果重新加载字体呢?其实也很简单,通过命令行进入 Python,运行如下代码:

     from matplotlib.font_manager import _rebuild
     _rebuild()
    

    图例:重新加载字体 6. 让我们再重新运行一下那个出问题的 Python 脚本吧!哈哈哈,感谢上帝爸爸,终于成功了!!

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读