运行环境: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 ## 设置正常显示符号
无中文字体,即加入上面两行代码后依旧报错的
- 打开终端,输入
python
进入python环境,再输入下列代码,查看字体路径
import matplotlib
print(matplotlib.matplotlib_fname())
-
下载SimHei字体文件。百度搜一下随便找个网站下载,要注意是.ttf格式的文件。把下载好的文件放入
/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc/fonts/ttf
目录下
-
进入终端python环境,输入代码查看缓存文件的路径
import matplotlib
matplotlib.get_cachedir()
- 复制路径,按
control-D
退出python环境,输入rm -rf 路径
删除缓存文件
- 修改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
- 最后重启Spyder即可。
注:改完文件后就不要再加文章开头的两行代码了。