文章目錄
- text方法
- 字體
- 局部字體
matplotlib教程: 初步📈 子圖繪制📈 坐標投影📈 刻度設置📈 共享坐標軸📈 內容填充
text方法
【plt】提供了文字顯示函數text,包含三個必不可少的參數,即 x , y x,y x,y表示文字的參考位置, s s s為將要寫出的字符串。此外,當涉及到較多文字時,還有一些布局參數較為常用,如下表所示
參數/簡寫 | 取值 | 含義 |
---|---|---|
horizontalalignment/ha | center|right|left | 橫向對齊 |
verticalalignment/va | center|top|bottom|baseline | 縱向對齊 |
其布局特性如下圖所示
代碼如下
import matplotlib.pyplot as plt
from itertools import productheight = width = .8
hDict = {'left':.1, 'right':.9, 'center':.5}
vDict = {'bottom':.1, 'top':.9, 'center':.5}ax = plt.subplot()for h, v in product(hDict, vDict):posInfo = f"position:({hDict[h]},{vDict[v]})\n "alignInfo = f"alignment:{h} and {v}"ax.text(hDict[h],vDict[v], posInfo+alignInfo,ha = h, va = v, transform=ax.transAxes, wrap=True)plt.show()
其中,hDict和vDict用于設置左、中、右和上、中、下對應的繪圖坐標。在繪圖函數中,分別調用了繪圖位置以及對其對齊標志,其中wrap為True,表示接受換行。
字體
【plt】中的字體文件被封裝在【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’ |
---|---|---|---|---|---|---|
存儲路徑 | 字體名 | 尺寸 | 拉伸方式 | 斜粗風格 | 變體 | 粗細 |
若想全局設置字體,可通過更改plt.rcParams
來實現,例如設為等線字體
plt.rcParams['font.sans-serif'] = 'DengXian'
plt.text(0,0,'測試',fontsize=20)
plt.show()
效果為
局部字體
rcParams并非坐標軸的屬性,而是當前作圖窗格的屬性,一經更改,則整個圖像都會更改。相比之下,通過plt.text
中的fontproperties
參數,可以更改當前字體。一般來說電腦中內置的字體文件都是數百記,很難逐一展示,所以接下來希望將前100個字體展示在一張圖中。
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()
得到測試字體如圖所示,比較可惜的是,絕大多數字體都不支持中文,甚至有些字體連英文都不支持。