解决Matplotlib作图时中文会显示为小方框的问题
网上有好几种方法,这里使用的是改默认字体的方式
1、找到matplotlib的文件存储路径,使用python
import matplotlib as mpl print mpl.matplotlib_fname() # 得到/usr/local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibr
字体所在文件夹是mpl-data下的fonts/ttf
2、找到系统中的中文字体并复制到mpl的字体路径下,这里用的是Hiragino Sans GB,也可以自己下载
命令行下 cp 字体路径(字体有空格的话用引号括起来,比如'Hiragino Sans GB.ttc') /usr/local/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf
3、如果字体是ttc要在mpl的font_manager.py里注册ttc
font_manager.py在../matplotlib/这个路径下
找到一个叫get_fontext_synonyms的function, 在返回的'ttf'中加入'ttc',如下
def get_fontext_synonyms(fontext): """ Return a list of file extensions extensions that are synonyms for the given file extension *fileext*. """ return {'ttf': ('ttf', 'otf', 'ttc'), 'otf': ('ttf', 'otf'), 'afm': ('afm',)}[fontext]
4、修改mpl的配置文件
路径就是第一步中查到的文件,打开后找到font的设置
将font.sans-serif取消注释,在一系列字体最前面加上新增的中文字体的名字,比如Hiragino Sans GB
也就是将默认font-family(sans-serif)的默认字体变成中文字体
5、done