一、报错信息
RuntimeWarning: Glyph 20108 missing from current font. font.set_text(s, 0.0, flags=flags)
原因:matplotlib中文乱码
二、解决方法
1、有中文字体
直接加入下面的两行代码即可正常显示
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
2、无中文字体
此时加入上面两行代码后依旧报错。处理方法是:
1)找到 python 中保存字体的目录
C:\Users\xxxxx>python
Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>import matplotlib
>>>print(matplotlib.matplotlib_fname())
D:\Anaconda531\lib\site-packages\matplotlib\mpl-data\matplotlibrc
2)下载并保存字体文件
在网上搜一下相应的 .ttf 格式字体文件(比如这里的 SimHei 字体),随便找个网站下载,然后文件放入以下目录。
D:\Anaconda531\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
3)清理旧缓存文件
在python环境中查看缓存文件的路径。
>>> import matplotlib
>>> matplotlib.get_cachedir()
'C:\\Users\\xxxxx\\.matplotlib'
将这个缓存目录删掉。
4)修改配置文件 matplotlibrc
D:\Anaconda531\Lib\site-packages\matplotlib\mpl-data\matplotlibrc
将这个配置文件(没有扩展名的)打开,修改以下内容
# 去掉 # 注释
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
5)重新切换回 ide 中,运行代码。
正常情况下,这个时候应该能够解决问题。此时,
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
这两句可以注释掉了。
参考资料:
https://www.cnblogs.com/swiftyao/p/14200373.html