在使用python包matplotlib绘图时报错如下:

  1. /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.
  2. font.set_text(s, 0.0, flags=flags)
  3. /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.
  4. font.set_text(s, 0.0, flags=flags)
  5. /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.
  6. font.set_text(s, 0.0, flags=flags)

解决方案

1 查看当前系统有那些中文字, 命令fc-list :lang=zh family

  1. $ fc-list :lang=zh family
  2. Heiti TC,黑體\-繁,黒体\-繁,Heiti\-번체,黑体\-
  3. STSong
  4. .PingFang HK,.蘋方\-港,.苹方\-
  5. .PingFang SC,.蘋方\-簡,.苹方\-
  6. Hiragino Sans GB,冬青黑體簡體中文,ヒラギノ角ゴ 簡体中文,冬青黑体简体中文,冬青黑體簡體中文 W3,Hiragino Sans GB W3,ヒラギノ角ゴ 簡体中文 W3,冬青黑体简体中文 W3
  7. Hiragino Sans GB,冬青黑體簡體中文,ヒラギノ角ゴ 簡体中文,冬青黑体简体中文,冬青黑體簡體中文 W6,Hiragino Sans GB W6,ヒラギノ角ゴ 簡体中文 W6,冬青黑体简体中文 W6
  8. .PingFang TC,.蘋方\-繁,.苹方\-
  9. PingFang HK,蘋方\-港,苹方\-
  10. PingFang SC,蘋方\-簡,苹方\-
  11. .LastResort
  12. PingFang TC,蘋方\-繁,苹方\-
  13. GB18030 Bitmap
  14. Heiti SC,黑體\-簡,黒体\-簡,Heiti\-간체,黑体\-
  15. .Hiragino Sans GB Interface
  16. Arial Unicode MS
  17. Songti TC,宋體\-繁,宋体\-
  18. Fixed
  19. Songti SC,宋體\-簡,宋体\-

2 在绘图的python文件中设置字体

  1. import matplotlib
  2. matplotlib.rcParams['font.sans-serif'] = ["Songti SC", 'sans-serif'] # 显示中文标签
  3. matplotlib.rcParams['axes.unicode_minus'] = False # 这两行需要手动设置

参考连接:https://matplotlib.org/3.1.0/tutorials/text/text_props.html#text-with-non-latin-glyphs