Matplotlib在Mac上的中文支持问题

Posted on 2018-01-31 17:18  Aethria  阅读(123)  评论(0编辑  收藏  举报

解决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