囫囵吞桃的个人博客 Home

matplotlib字体问题

#技术 #python

问题表现: 在matplotlib中,尝试使用中文时,会出现中文变成方块的问题。

解决方案:

plt.rcParams['font.sans-serif'] = ['PingFang SC', 'Heiti SC', 'Arial Unicode MS']  
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题

原理: 问题出现的原因是,matplotlib默认使用的字体不包含中文,因此指定使用SimHei这一个一般设备上都有的中文字体就能解决。

但是,matplotlib使用的符号-是Unicode minus U+2212。一般而言,中文字体很可能不包含这个字符。设置参数axes.unicode_minus = False后,matplotlib将会使用ASCII的负号取代Unicode负号。问题遂解决。