font_manager
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’ |
---|---|---|---|---|---|---|
存储路径 | 字体名 | 尺寸 | 拉伸方式 | 斜粗风格 | 变体 | 粗细 |
全局设置字体
若想全局设置字体,可通过更改plt.rcParams
来实现,例如设为等线字体
plt.rcParams['font.sans-serif'] = 'DengXian'
plt.text(0,0,'测试',fontsize=20)
plt.show()
效果为
一般来说电脑中内置的字体文件都是数百记,很难逐一展示,所以接下来希望将前100个字体展示在一张图中。
然而rcParams
对于并非坐标轴的属性,而是当前作图窗格的属性,若想在局部启用其他字体,可通过plt.text
中的fontproperties
参数来实现
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()
得到测试字体如图所示
在作图时选择其中支持中文的字体,就不会出现中文乱码问题了。
字体列表
字体列表如下
STIXSizeFourSym | STIXNonUnicode |
cmmi10 | DejaVu Sans Mono |
STIXSizeTwoSym | cmsy10 |
STIXGeneral | DejaVu Serif |
STIXGeneral | DejaVu Sans |
STIXSizeOneSym | STIXSizeTwoSym |
DejaVu Serif | STIXSizeOneSym |
cmss10 | STIXNonUnicode |
DejaVu Sans Mono | DejaVu Sans Mono |
STIXNonUnicode | DejaVu Sans |
cmex10 | cmtt10 |
cmr10 | DejaVu Serif |
DejaVu Sans Display | STIXGeneral |
DejaVu Sans | DejaVu Sans |
STIXSizeThreeSym | STIXGeneral |
STIXNonUnicode | DejaVu Sans Mono |
DejaVu Serif | STIXSizeFourSym |
STIXSizeFiveSym | cmb10 |
STIXSizeThreeSym | DejaVu Serif Display |
Microsoft Sans Serif | HGBS_CNKI |
Palatino Linotype | Constantia |
Nirmala UI | HGXC_CNKI |
Microsoft Yi Baiti | Verdana |
Franklin Gothic Medium | HGDGY_CNKI |
HGXL_CNKI | Consolas |
Segoe UI Variable | Segoe Script |
Segoe UI | Malgun Gothic |
Segoe MDL2 Assets | Leelawadee UI |
Segoe UI | Candara |
Leelawadee UI | Corbel |
Palatino Linotype | Segoe UI Emoji |
Lucida Console | Lucida Sans Unicode |
SimSun | Microsoft YaHei |
HGCH_CNKI | HGLS_CNKI |
Microsoft JhengHei | Arial |
Constantia | HGWYS_CNKI |
Segoe UI | Consolas |
Wingdings | HGLB_CNKI |
Courier New | HGY4_CNKI |
HGHB_CNKI | Tahoma |
Comic Sans MS | Calibri |
Verdana | HGY1_CNKI |
Times New Roman | Verdana |
Microsoft Himalaya | Candara |
Segoe Print | Courier New |
Candara | Constantia |
Ebrima | Gadugi |
Segoe Script | Yu Gothic |
HGDH_CNKI | Calibri |
Sitka | HGY3_CNKI |