1. 程式人生 > 其它 >使用matplotlib缺失中文字型的解決方案

使用matplotlib缺失中文字型的解決方案

出現問題

當我們用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 本文版權歸作者和部落格園所有,歡迎轉載,但未經作者同意,必須保留此段宣告,且在文章頁面醒目位置顯示原文連線,否則保留追究法律責任的權利。