matplotlib添加字体、字体格式自定义
文章目录
1.向matplotlib添加字体
比如添加Times New Roman字体,参照此篇博客
2.画图时自定义字体格式
from matplotlib import pyplot as plt
fig, ax = plt.subplots()
2.0 修改全局字体
对于Axes
对象设置刻度字体很麻烦(先设定位置再设定文字)。有一条捷径就是先设置全局字体为预期的刻度字体,然后再设置别的地方的字体,如较为容易设置的标题字体、坐标轴标签字体、图例字体等。
plt.rc('font',family='Times New Roman', size=15)
2.1 用fontproperties
参数的一类方法
这一类方法包括plt.xlabel, plt.ylabel, ax.set_xlabel, ax.set_ylabel, plt.xticks, plt.yticks, plt.title, ax.set_title
首先实例化一个FontProperties
类,然后在调用函数时传给fontproperties
from matplotlib import font_manager as fm
font_properties = fm.FontProperties(**kwargs)
plt.xlabel('xlabel', fontproperties=font_properties)
plt.yticklabels(fontproperties=font_properties)
其中可以指定的关键字参数有如下这些
2.2 用prop
参数的一类方法
这类方法主要是绘制图例函数plt.legend, ax.legend
首先定义一个fontdict
,然后在调用函数时把fontdict
传给prop
参数
其中fontdict
的可选键名与FontProperties
的可选参数名一样
fontdict = {'family':'Times New Roman', 'size':19}
plt.legend(loc='best',prop=fontdict)
2.3 用fontdict
参数的一类方法
其中包括plt.xlabel
, plt.ylabel
,plt.text
ax.text
ax.set_xticklabels
ax.set_yticklabels
等。
(没想到吧,plt
设定ticklabel
和Axes
对象设定ticklabels
方法竟然不一样!!)
也是定义一个fontdict
,只不过这次传给的是fontdict
参数。
font_dict = {'math_fontfamily':'cm', 'size':19}
plt.text(r'$S = \pi r^2$',fontdict=font_dict)
xticks = ax.get_xticks()
ax.set_xticks(xticks)
ax.set_xticklabels(xticks, fontdict=font_dict)
2.4 汇总
方法 | 位置参数名 | 传入的参数类型 |
---|---|---|
plt.xlabel , plt.ylabel , ax.set_xlabel , ax.set_ylabel , plt.xticks , plt.yticks ,plt.title ,ax.set_title |
fontproperties |
FontProperties 实例 |
plt.legend , ax.legend |
prop |
fontdict 字典 |
plt.xlabel , plt.ylabel ,plt.text , ax.text , ax.set_xticklabels , ax.set_yticklabels |
fontdict |
fontdict 字典 |
来源:JasmineFeng