报错:RuntimeWarning: Glyph 20108 missing from current font. font.set_text(s, 0.0, flags=flags)解决方法

运行环境:Mac Python 3.8 Anaconda Spyder

报错信息

RuntimeWarning: Glyph 20108 missing from current font. font.set_text(s, 0.0, flags=flags)

原因:matplotlib中文乱码

解决方法

分为两种情况
有中文字体,直接加入下面的两行代码即可正常显示

plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号

无中文字体,即加入上面两行代码后依旧报错的

  1. 打开终端,输入python进入python环境,再输入下列代码,查看字体路径
import matplotlib    
print(matplotlib.matplotlib_fname())

  1. 下载SimHei字体文件。百度搜一下随便找个网站下载,要注意是.ttf格式的文件。把下载好的文件放入/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc/fonts/ttf目录下

  2. 进入终端python环境,输入代码查看缓存文件的路径

import matplotlib
matplotlib.get_cachedir()
  1. 复制路径,按 control-D退出python环境,输入rm -rf 路径删除缓存文件
  2. 修改matplotlibrc文件,位于/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/目录下,修改内容见下
 #  去掉#   
 font.family         : sans-serif   

 #  去掉#,在冒号后添加 SimHei
 font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

 #  去掉#,将True改为False
 axes.unicode_minus  : False
  1. 最后重启Spyder即可。

注:改完文件后就不要再加文章开头的两行代码了。

posted @ 2020-12-28 10:50  SwiftYao  阅读(10013)  评论(1)    收藏  举报