美文网首页
Matplotlib 无法显示中文

Matplotlib 无法显示中文

作者: AlexSun1995 | 来源:发表于2017-05-07 20:38 被阅读0次

    问题

    将坐标或子图描述的文字放在matplotlib的图像中,如果有中文的话,有可能会显示错误,或者无法显示。

    step1

    在调用绘图的代码段前面加上

    import sys
    defaultencoding = 'utf-8'
    if sys.getdefaultencoding() != defaultencoding:
        reload(sys)
        sys.setdefaultencoding(defaultencoding)
    

    使用utf-8的编码方式,但是用

     # -*- coding:utf-8 -*-
    

    就会报错,错误是:

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
    

    可能是因为这样做不是全局使用?猜的。

    Step2

    仍然不能正确的显示中文,但是这时候代码运行的时候已经不会报错了,只是中文任然无法正常显示,这里的原因是matplotlib没有中文字体库。
    所以一劳永逸的方法就是把matplotlib默认的字体改成支持中文的Microsoft Yahei UI字体。
    在Windows中进入anoconda中找到matplotlib 的文件夹
    实验室电脑是这个位置,具体使用的使用就依照这个相对路径找到mpl-data 文件夹
    C:\Program Files\Anaconda2\Lib\site-packages\matplotlib\mpl-data
    打开
    matplotlibrc
    文件,找到

    font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif

    把注释去掉,然后把下载好的Microsoft Yahei UI 字体复制到
    

    C:\Program Files\Anaconda2\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

    文件夹中,把Vera.ttf文件删掉,把Microsoft Yahei UI.ttf改成 Vera.ttf
    Ok,
    然后运行python,就会出现下面的结果:
    
    ![西瓜书里的决策树](https://img.haomeiwen.com/i5685046/6bd7083f34d418cc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    相关文章

      网友评论

          本文标题:Matplotlib 无法显示中文

          本文链接:https://www.haomeiwen.com/subject/ouqytxtx.html