1. 程式人生 > >(資料科學學習手札100)搞定matplotlib中的字型設定

(資料科學學習手札100)搞定matplotlib中的字型設定

> 本文示例檔案已上傳至我的`Github`倉庫[https://github.com/CNFeffery/DataScienceStudyNotes](https://github.com/CNFeffery/DataScienceStudyNotes) # 1 簡介   `matplotlib`作為資料視覺化的利器,被廣泛用於資料分析之中,但不太友好的是`matplotlib`中書寫非英文文字內容時,如果不事先對字型進行相關設定,會發現繪製出的諸如**中文**等均顯示為**方塊亂碼**,而今天的內容,我們就來小小總結一下`matplotlib`中字型設定的常用技巧。
圖1
# 2 在matplotlib中設定字型的常用方法   在`matplotlib`中設定字型的方法按作用範圍可分為全域性設定與臨時設定: ## 2.1 在matplotlib中設定全域性字型   我們在預設狀態下使用`matplotlib`書寫中文內容時之所以顯示出亂碼,是因為`matplotlib`預設的字型為英文字型,導致許多`unicode`編碼的語言文字都無法書寫。   而全域性設定字型的方式,指的是我們可以通過修改本地配置檔案或在程式開頭設定字型相關引數,從而人為地為當前kernel下的`matplotlib`規定使用指定的字型,主要有以下幾種情況: - **使用系統自帶字型**   所謂**系統自帶字型**,譬如對於`windows`,其系統盤`Windows/Fonts`下的諸多已安裝到系統中的字型:
圖2
  當然,`matplotlib`可以檢測到的字型不止上述的這些,我們可以通過下列方式檢視`matplotlib`中預設已經識別到的所有可用字型: ```Python import matplotlib.pyplot as plt from matplotlib import font_manager for font in font_manager.fontManager.ttflist: # 檢視字型名以及對應的字型檔名 print(font.name, '-', font.fname) ```
圖3
  其中在`font_manager.fontManager.ttflist`中迭代到的每個物件,其`name`屬性即為我們下面設定字型要使用到的名稱,以**華文琥珀**為例,我們先檢視到其對應的字型檔名稱:
圖4
  接著我們寫兩行程式來找到其對應的名稱:
圖5
  接著按照`plt.rcParams['font.sans-serif'] = 字型名稱`的格式設定即可:
圖6
  可以看到這時我們全域性所有文字都變成**華文琥珀**。 - **使用任意的字型**   如果你想要的字型不在系統預設字型中,且你只想臨時使用不想安裝到系統字型中,則可以利用`font_manager.fontManager.addfont()`來傳入字型檔案路徑臨時註冊一個字型,以我下載的三方字型檔案`MaShanZheng-Regular.ttf`為例:
圖7
圖8
## 2.2 在matplotlib中設定區域性字型   而如果你只是想要在資料視覺化作品中的部分元素譬如文字標註中臨時使用一下字型,則可以利用`font_manager.FontProperties()`將字型路徑作為`fname`引數傳入,並傳入到對應`matplotlib`繪圖API相應引數中,以`text()`為例:
圖9
  而刻度標籤則可以參考下面的方式:
圖10
---   以上就是本文的全部內容,歡迎在評論區與我進