加载 matplotlib 包中文无法显示问题

问题描述

在使用 matplotlib 绘图的时候,运行中警告 “RuntimeWarning: Glyph 39064 missing from current font. font.set_text(s, 0, flags=flags)” , 结果为中文无法显示。
在这里插入图片描述

问题分析

该原因是因为对应字体无法显示中文的问题,需要加载对应正确的字体包。

解决问题

网上一般建议使用

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False

而上述的临时生效,若每次输入都要执行一次未免也太过繁琐了,何况 SimHei (黑体)字体在部分 linux 系统是不存在的,上述操作可能存在不生效的情况。

而我更想彻底解决该问题, 希望可以永久生效,于是相关思路如下

  • 获取 matplotlib 配置,用于检查是否存在可以显示中文的字体
    • 若无,获取 matplotlib 存在字体文件地方并下载相关字体文件。
    • 若有,修改对应配置
  • 获取 matplotlib 缓存地方,删除缓存使之配置生效
  • 运行测试

获取 matplotlib 配置

  1. windows && linux 均适用
import matplotlib as mat
# Get the location of the config file.
print(matplotlib.matplotlib_fname())

# 返回结果
# /home/wangkai/.local/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
  1. 以 font.sans-serif、 font.family 关键字进行搜索, linux 系统可以使用 / font.family 回车 点击 n,如下图所示,一般情况下这里是注释掉的,需要把注释去掉,另外 key 在配置文件只能唯一,即便注释了也不行。
    在这里插入图片描述

  2. 搜索发现字体缺失(也有可能不认识那些字体,😃)
    因此需要下载对应字体库, 字体下载地址
    获取字体库存放路径,因为上述获取包的存放地址后,基本路径都一样,去除配置 matplotlibrc, 追加 /mpl-data/fonts/ttf/ 即是字体文件存放的地方,可以把对应下载的 ttf 文件存放在该目录。

  3. 修改 matplotlibrc 配置,将 font.family 行改为 font.family = sihei,font.sans-serif追加 simhei, 特别说明对大小写敏感,因为我下载的字体库是 simhei,所以我使用是小写,如下图所示
    在这里插入图片描述

  4. 保存

删除缓存

  1. 获取缓存地址
import matplotlib as mat
# Return the string path of the cache directory.
print(mat.get_cachedir())

# 返回结果
# /home/wangkai/.cache/matplotlib
  1. 删除缓存, rm -rf /home/wangkai/.cache/matplotlib/

运行测试

在这里插入图片描述

Tips

解决负号无法正常显示的问题

上述 获取 matplotlib 配置 操作完成后, 进入配置文件搜索 unicode_minus 关键字,将该值改为 False 即可, 如下图所示
在这里插入图片描述

效果图:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值