報錯: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即可。

注:改完文件后就不要再加文章開頭的兩行代碼了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM