解决 matplotlib 无法显示中文

永久解决 matplotlib 图例中文方块错误


原文链接:https://learnku.com/articles/41886
这里对原文做了点修改,因为原文还是有点小问题的

问题

当打印图例的时候,图可以正常显示,但中文会显示方块。比如 title。然后会有个小报错:
报错描述:

/Users/username/anaconda3/lib/python3.6/site-packages/matplotlib/font_manager.py:
1331: UserWarning: findfont: Font family [‘SimHei’] not found. Falling
back to DejaVu Sans (prop.get_family(), self.defaultFamily[fontext]))

查看当前环境的字体路径

import matplotlib
print(matplotlib.matplotlib_fname())
/Users/username/anaconda3/lib/python3.6/site-packages/matplotlib

解决方法

首先下载一个字体文件 SimHei.ttf 提取码858y。
解压字体后拷贝到 matplotlib/mpl-data/fonts/ttf 目录下面。

mv ~/Downloads/SimHei.ttf ~/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf

修改配置文件 matplotlibrc:

vim ~/anaconda3/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

found 这三项配置并修改:

font.family: sans-serif

font.sans-serif: SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

axes.unicode_minus: False # 解决负号'-'显示为方块的问题

前两项大概在 194 行,第三项大概在 325 行。

但是改了配置之后并不会生效,需要重新加载字体,在 Python 中运行如下代码即可

删除缓存

print(matplotlib.get_cachedir())
rm -rf ~/.matplotlib

重启jupyter,现在再打印图例一点问题都没有了,支持中英文混搭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值