運行環境: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即可。
注:改完文件后就不要再加文章開頭的兩行代碼了。