在使用python包matplotlib绘图时报错如下:
/Users/apple/code/tl/backtrader-zh/venv/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 21021 missing from current font.
font.set_text(s, 0.0, flags=flags)
/Users/apple/code/tl/backtrader-zh/venv/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 22987 missing from current font.
font.set_text(s, 0.0, flags=flags)
/Users/apple/code/tl/backtrader-zh/venv/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:240: RuntimeWarning: Glyph 37329 missing from current font.
font.set_text(s, 0.0, flags=flags)
解决方案
1 查看当前系统有那些中文字, 命令fc-list :lang=zh family
$ fc-list :lang=zh family
Heiti TC,黑體\-繁,黒体\-繁,Heiti\-번체,黑体\-繁
STSong
.PingFang HK,.蘋方\-港,.苹方\-港
.PingFang SC,.蘋方\-簡,.苹方\-简
Hiragino Sans GB,冬青黑體簡體中文,ヒラギノ角ゴ 簡体中文,冬青黑体简体中文,冬青黑體簡體中文 W3,Hiragino Sans GB W3,ヒラギノ角ゴ 簡体中文 W3,冬青黑体简体中文 W3
Hiragino Sans GB,冬青黑體簡體中文,ヒラギノ角ゴ 簡体中文,冬青黑体简体中文,冬青黑體簡體中文 W6,Hiragino Sans GB W6,ヒラギノ角ゴ 簡体中文 W6,冬青黑体简体中文 W6
.PingFang TC,.蘋方\-繁,.苹方\-繁
PingFang HK,蘋方\-港,苹方\-港
PingFang SC,蘋方\-簡,苹方\-简
.LastResort
PingFang TC,蘋方\-繁,苹方\-繁
GB18030 Bitmap
Heiti SC,黑體\-簡,黒体\-簡,Heiti\-간체,黑体\-简
.Hiragino Sans GB Interface
Arial Unicode MS
Songti TC,宋體\-繁,宋体\-繁
Fixed
Songti SC,宋體\-簡,宋体\-简
2 在绘图的python文件中设置字体
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ["Songti SC", 'sans-serif'] # 显示中文标签
matplotlib.rcParams['axes.unicode_minus'] = False # 这两行需要手动设置
参考连接:https://matplotlib.org/3.1.0/tutorials/text/text_props.html#text-with-non-latin-glyphs