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