永久解决 matplotlib 图例中文方块错误
发布日期:2021-05-09 01:36:40 浏览次数:22 分类:博客文章

本文共 1157 字,大约阅读时间需要 3 分钟。

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

  • 问题
  • 查看当前环境的字体路径
  • 解决方法
  • 删除缓存

原文链接: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 matplotlibprint(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-seriffont.sans-serif: SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serifaxes.unicode_minus: False # 解决负号'-'显示为方块的问题

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

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

删除缓存

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

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

上一篇:Dubbo服务注册原理
下一篇:如何快速定位 Redis 热 key?

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月29日 03时52分51秒