matplotlib 默认输出的是无衬线字体,因此,修改无衬线字体的配置即可正确输出中文:
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["STSong"]
一般来说, matplotlib 会将字体的配置保存在 ~/.matplotlib/fontlist.json
里,比如随便找一个 entry 是这样结构的:
{
"fname": "fonts/afm/phvro8an.afm",
"name": "Helvetica",
"style": "italic",
"variant": "normal",
"weight": "medium",
"stretch": "condensed",
"size": "scalable",
"__class__": "FontEntry"
}
name
就表示字体的名称,fname
是该字体的目录,可以在该 json 文件里添加新字体。
在 matplotlib 中,plt.title
、plt.xlabel
、plt.ylabel
、plt.text
和 plt.legend
这几个函数是涉及添加文字内容的。
修改字体类型或大小的方式,plt.title
、plt.xlabel
、plt.ylabel
、plt.text
相同,使用 fontdict
参数;plt.legend
可以使用
fontdict
是一个字典,见: