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()
得到测试字体如图所示
在作图时选择其中支持中文的字体,就不会出现中文乱码问题了。
|