如何让 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 脚本吧!哈哈哈,感谢上帝爸爸,终于成功了!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cab5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值