文章目录
- 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 product
height = 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()
得到测试字体如图所示,比较可惜的是,绝大多数字体都不支持中文,甚至有些字体连英文都不支持。