Linux系统解决matplotlib使用中文字体问题

说明:

  • 其他字体缺失的报错可使用类似方法解决
  • 首先需要安装pythonmatplotlib,若没安装可执行conda install -c conda-forge matplotlib -y安装。
  • 这里使用conda安装,对于python包,建议使用者学习用conda安装,conda安装不了再用pip安装
  • 若有需求,后续可再出一篇python使用及包管理的文章,教大家如何良好安装python包及环境管理。
  1. 首先查看系统是否存在需要使用的字体:

    import matplotlib.font_manager
    
    ttf_name = "SimHei"
    font_list = matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')
    for font in font_list:
        if f'{ttf_name}.ttf' in str(font).lower():
            print(font)
    
  2. 如果系统有相应字体,可直接拷贝,否则下载simhei字体文件,将字体文件SimHei.ttf拷贝到$(dirname "$(python -c "import matplotlib;print(matplotlib.matplotlib_fname())")")/fonts/ttf/

  3. 修改matplotlibrc

    # cd到matplotlibrc的路径
    cd $(dirname "$(python -c "import matplotlib; print(matplotlib.matplotlib_fname())")")
    # 修改
    sed -i '/^#font.family/c\font.family: sans-serif' matplotlibrc
    sed -i 's/^#font.sans-serif: /font.sans-serif: SimHei, /' matplotlibrc
    sed -i 's/#axes.unicode_minus: True/axes.unicode_minus: False/' matplotlibrc
    
  4. 清除缓存

    rm -rf ~/.cache/matplotlib
    
  5. 测试

    import matplotlib.pyplot as plt
    
    plt.plot([1, 2, 3], [100, 500, 300])
    plt.title('matplotlib中文字体测试', fontsize=25)
    plt.xlabel('x轴', fontsize=15)
    plt.ylabel('y轴', fontsize=15)
    plt.savefig('test.png')
    

linux系统可使用eogdisplay在命令行查看图片,如eog test.png,可看到图片中中文正常显示,不再是小方块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值