matplotlib是画图利器,可惜中文支持不够好,不设中文字体画出的图片里面的中文全是小框框,笔者也是google了许多次,尝试了好几种方法,终于弄对了。
思路就是找一个ttf文件,可以直接用Windows系统里面ttf文件,然后创建自己的font,将文字使用的font设置为自己创建的font就可以了。
具体如下
from matplotlib.font_manager import FontProperties
myfont = FontProperties(fname=os.path.join('STSONG.ttf')) //这里请写上自己的ttf路径
创建好了自己的font,剩下的就是把需要中文显示的地方设成myfont就可以了。
比如饼状图, 饼状图的每一块需要遍历出来单独设置
fig1, ax1 = plt.subplots()
pie, l_text, p_text = ax1.pie(fracs, colors=COLORS, explode=tuple(explodes), labels=labels,
labeldistance=1.1, autopct='%1.2f%%', startangle=90, pctdistance=0.95)
for t in l_text:
t.set_fontproperties(myfont)
x, y轴的字体这样设置
plt.xlabel('x zhou', fontproperties=myfont)
plt.ylabel('y zhou', fontproperties=myfont)
legend的字体这样设
plt.legend(loc=4, borderaxespad=0., prop=myfont)
是不是超简单, 只要找好了需要的ttf字体文件,将设字体的地方用myfont代替就可以了。