zoukankan      html  css  js  c++  java
  • 永久解决 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,现在再打印图例一点问题都没有了,支持中英文混搭。

  • 相关阅读:
    定时器实现点击重新发送信息倒计时显示
    新浪微博5s钟后跳转页面
    时钟制作代码
    判断线段相交
    POJ1265:Area(多边形面积公式+pick公式) 好题
    ACM零散知识
    POJ2318:TOYS(叉积判断点和线段的关系+二分)&&POJ2398Toy Storage
    计算几何初步认识
    UVA10026:Shoemaker's Problem(贪心)
    UVA10020:Minimal coverage(最小区间覆盖)
  • 原文地址:https://www.cnblogs.com/cndeveloper/p/14617086.html
Copyright © 2011-2022 走看看