溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python畫圖時怎么調(diào)用本地字體

發(fā)布時間:2021-12-14 12:29:12 來源:億速云 閱讀:285 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python畫圖時怎么調(diào)用本地字體,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

matplotlib中的字體文件被封裝在font_manager這個子模塊中,fontManager.ttflist這個列表涵蓋了所有Matplotlib支持的字體。

>>> import matplotlib.pyplot as plt
>>> from matplotlib.font_manager import fontManager
>>> print(fontManager.ttflist[0])   #此為字體文件
<Font 'cmmi10' (cmmi10.ttf) normal normal 400 normal>

Font類中主要有7個基本屬性:

‘fname'‘name'‘size'‘stretch'‘style'‘variant'‘weight'
存儲路徑字體名尺寸拉伸方式斜粗風(fēng)格變體粗細

若想全局設(shè)置字體,可通過更改plt.rcParams來實現(xiàn),例如設(shè)為等線字體

plt.rcParams['font.sans-serif'] = 'DengXian'
plt.text(0,0,'測試',fontsize=20)
plt.show()

效果為

Python畫圖時怎么調(diào)用本地字體

一般來說電腦中內(nèi)置的字體文件都是數(shù)百記,很難逐一展示,所以接下來希望將前100個字體展示在一張圖中。

然而rcParams對于并非坐標(biāo)軸的屬性,而是當(dāng)前作圖窗格的屬性,若想在局部啟用其他字體,可通過plt.text中的fontproperties參數(shù)來實現(xiàn)

import numpy as np
from matplotlib.font_manager import FontProperties
x,y  = np.indices([10,10]).reshape(2,100)/10
for i in range(100):
    font = fontManager.ttflist[i]
    plt.text(x[i],y[i],f"測試:{font.name}", 
    fontsize=10, ha='left', va='bottom',
    fontproperties = FontProperties(fname=font.fname))

plt.show()

得到測試字體如圖所示

Python畫圖時怎么調(diào)用本地字體

在作圖時選擇其中支持中文的字體,就不會出現(xiàn)中文亂碼問題了。

補充

python實現(xiàn)繪圖時候的中文顯示,顯示微軟雅黑字體

1.安裝庫pip3 install matplotlib

2.向Matplotlib添加中文字體Microsoft YaHei(微軟雅黑)

Matplotlib不能默認(rèn)使用中文字體顯示字符的原因只是因為其未包含中文字體文件,所以導(dǎo)入中文字體文件到Matplotlib中即可。

網(wǎng)上下載微軟雅黑的ttf文件。Microsoft YaHei.ttf

D:\python\Lib\site-packages\matplotlib\mpl-data(新電腦在C盤python39,裝python的地方)

打開這個目錄可以看到這個路徑下的mpl-data/fonts/ttf/,這個就是Matplotlib引入字體的路徑,我們只需要把微軟雅黑字體的ttf文件拷貝到其中即可。

3.修改Matplotlib的默認(rèn)字體配置

mpl-data/matplotlibrc這個文件,這個就是Matplotlib的配置文件。

在這個文件中搜索font.family,其中font.family:  sans-serif將#刪除即把此行注釋打開。則Matplotlib現(xiàn)在的默認(rèn)字體族是:

font.family : sans-serif

再在這個文件中搜索font.sans-serif,將#刪除即把此行注釋打開,然后在這個配置的最前面加上Microsoft YaHei,

font.sans-serif : Microsoft YaHei, DejaVu Sans, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

則Matplotlib現(xiàn)在的默認(rèn)sans-serif字體族會最先使用Microsoft YaHei去展示字體,而這個Microsoft YaHei就可以展示中文字體了。

(axes.unicode_minus  : True這一行注釋去掉,將true改成false,,,此處用來正常顯示負(fù)號)(可不做)

4.清除字體緩存(可不做)

為了更好地看到效果,最好可以清楚之前Matplotlib生成的緩存文件,打開~/.matplotlib路徑,其中可以看到fontList.json和tex.cache,前者其實就是字體列表的緩存文件,可以刪除:rm -rf fontList.json

5.當(dāng)然,懶辦法顯示中文字體

每次用時需要設(shè)置

plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標(biāo)簽(動態(tài)設(shè)置)
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號

以上是“Python畫圖時怎么調(diào)用本地字體”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI