使用matplotlib缺失中文字型的解決方案
阿新 • • 發佈:2021-08-17
出現問題
當我們用matplotlib作圖時中文亂碼,往往會發現中文的文字變成了小方塊。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei']
儘管我們指定了中文字型。這時可能會因為系統中缺失中文字型而導致不能顯示。具體表現就是,執行過程中報warning:
lib/python3.7/site-packages/matplotlib/font_manager.py:1241: UserWarning: findfont: Font family ['sans-serif'] not found. Falling back to DejaVu Sans. (prop.get_family(), self.defaultFamily[fontext]))
解決問題
1、首選安裝、拷貝對應字型到系統中。比如這裡我拷貝Windows系統中的黑體(simhei.ttf)到/usr/share/fonts/windows_fonts目錄。
mkdir /usr/share/fonts/windows_fonts sudo mv ~/simhei.ttf /usr/share/fonts/windows_fonts
接下來將目錄中的字型註冊到系統中,讓系統能夠識別到這些新字型。
cd /usr/share/fonts/windows_fonts
mkfontscale
mkfontdir
fc-cache
此時再用下面的命令檢視已經安裝好的字型:
fc-list #列出系統識別到的已安裝字型。
我們可以看到這麼一條:
此時我們會發現matplotlib作出的圖中中文依舊無法正常顯示,這種情況只需刪除matplotlib的快取目錄(~/.cache/matplotlib)即可解決。
rm -rf ~/.cache/matplotlib
至此中文就可以正常顯示了。
作者:書劍飄零 出處:https://www.cnblogs.com/oboth-zl 本文版權歸作者和部落格園所有,歡迎轉載,但未經作者同意,必須保留此段宣告,且在文章頁面醒目位置顯示原文連線,否則保留追究法律責任的權利。