matplotlib對中文的支持(Font family ['sans-serif'] not found.Falling back to DejaVu Sans)

一、問題描述:

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負號

使用matplotlib畫圖,在Windows下正常,在linux環境下中文亂碼

Font family ['sans-serif'] not found.Falling back to DejaVu Sans

二、解決方案:
在linux環境中的matplotlib裏裝入SIMHEI.TTF字體即可

三、解決步驟
1、下載SIMHEI.TTF字體
2、把字體放到指定目錄

# python 終端獲取路徑
import matplotlib    
print(matplotlib.matplotlib_fname())
#/root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

# 下載好的SIMHEI.TTF放到該目錄下 
# (shell)
mv ./SIMHEI.TTF /root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/

3、刪除matplotlib的緩衝目錄

# python 終端獲取緩存路徑
import matplotlib
print(matplotlib.get_cachedir())
# /root/.cache/matplotlib

# 刪除緩衝目錄
# (shell)
rm -rf /root/.cache/matplotlib

4、修改matplotlibrc文件

# (shell)
vim /root/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

# 修改的內容
 font.family         : sans-serif   
 # 去掉前面的#     
 font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif  
 # 去掉前面的#,並在冒號後面添加SimHei
 axes.unicode_minus  : False
 # 去掉前面的#,並將True改爲False
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章