【Python基礎(chǔ)】matplotlib字體設(shè)置看這一篇就夠了
本文示例文件已上傳至我的
?Github倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
matplotlib作為數(shù)據(jù)可視化的利器,被廣泛用于數(shù)據(jù)分析之中,但不太友好的是matplotlib中書寫非英文文字內(nèi)容時,如果不事先對字體進行相關(guān)設(shè)置,會發(fā)現(xiàn)繪制出的諸如「中文」等均顯示為「方塊亂碼」,而今天的內(nèi)容,我們就來小小總結(jié)一下matplotlib中字體設(shè)置的常用技巧。

2 在matplotlib中設(shè)置字體的常用方法
在matplotlib中設(shè)置字體的方法按作用范圍可分為全局設(shè)置與臨時設(shè)置:
2.1 在matplotlib中設(shè)置全局字體
我們在默認狀態(tài)下使用matplotlib書寫中文內(nèi)容時之所以顯示出亂碼,是因為matplotlib默認的字體為英文字體,導(dǎo)致許多unicode編碼的語言文字都無法書寫。
而全局設(shè)置字體的方式,指的是我們可以通過修改本地配置文件或在程序開頭設(shè)置字體相關(guān)參數(shù),從而人為地為當前kernel下的matplotlib規(guī)定使用指定的字體,主要有以下幾種情況:
「使用系統(tǒng)自帶字體」
所謂「系統(tǒng)自帶字體」,譬如對于windows,其系統(tǒng)盤Windows/Fonts下的諸多已安裝到系統(tǒng)中的字體:

當然,matplotlib可以檢測到的字體不止上述的這些,我們可以通過下列方式查看matplotlib中默認已經(jīng)識別到的所有可用字體:
import?matplotlib.pyplot?as?plt
from?matplotlib?import?font_manager
for?font?in?font_manager.fontManager.ttflist:
????#?查看字體名以及對應(yīng)的字體文件名
????print(font.name,?'-',?font.fname)

其中在font_manager.fontManager.ttflist中迭代到的每個對象,其name屬性即為我們下面設(shè)置字體要使用到的名稱,以「華文琥珀」為例,我們先查看到其對應(yīng)的字體文件名稱:

接著我們寫兩行程序來找到其對應(yīng)的名稱:

接著按照plt.rcParams['font.sans-serif'] = 字體名稱的格式設(shè)置即可:

可以看到這時我們?nèi)炙形淖侄甲兂?strong>「華文琥珀」。
「使用任意的字體」
如果你想要的字體不在系統(tǒng)默認字體中,且你只想臨時使用不想安裝到系統(tǒng)字體中,則可以利用font_manager.fontManager.addfont()來傳入字體文件路徑臨時注冊一個字體,以我下載的三方字體文件MaShanZheng-Regular.ttf為例:


2.2 在matplotlib中設(shè)置局部字體
而如果你只是想要在數(shù)據(jù)可視化作品中的部分元素譬如文字標注中臨時使用一下字體,則可以利用font_manager.FontProperties()將字體路徑作為fname參數(shù)傳入,并傳入到對應(yīng)matplotlib繪圖API相應(yīng)參數(shù)中,以text()為例:

而刻度標簽則可以參考下面的方式:

以上就是本文的全部內(nèi)容,歡迎在評論區(qū)與我進行討論~
往期精彩回顧
獲取本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。
加入微信群請掃碼:
