matplotlib在ax.set_title中可以使用定义FontProperties来实现,首先定义
myfont = matplotlib.font_manager.FontProperties( fname='/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc' )
然后在ax.set_title中作为参数fontproperties = myfont调用字体。
这样的好处是直接调用系统字体,不用受字体是ttf还是ttc的限制。
但在ax.bar中这种方式因为无法使用参数而无效,网上有很多种解决汉字显示的办法,总结一下,可以使用两种方式解决。
首先需要下载ttf字体,比如文泉驿的微米黑字体,然后查看matplotlib的配置文件
import
matplotlib
matplotlib.matplotlib_fname()
将字体上传到python3.6/site-packages/matplotlib/mpl-data下的fonts/ttf文件夹中
方式一
修改python3.6/site-packages/matplotlib/mpl-data下的matplotlibrc文件,将里面的
#font.family :sans-serif #font.sans-serif : wqy-mircohei,SimHei, DejaVu Serif……(把文泉驿文件名如wqy-microhei加到最前面) #axes.unicode_minus,将True改为False (这里是关于负号显示的,也可以在程序中设置)
然后删除当前用户下.cache/matplotlib目录下的所有文件,其实就是fontlist-v300.json文件。
重启后文字显示正常。
方式二:
直接修改fontlist-v300.json文件
首先找到文泉驿的字典选项,将原先为?的文件名改为wqy-microhei,然后将defaultFamily改为文泉驿字体名字,defaultFont路径修改为文泉驿字体所在。
重启后文字显示正常,两种方法都不再需要定义调用FontProperties