zoukankan      html  css  js  c++  java
  • Matplotlib中文乱码

        想要分析一批数据,画出图形会比较直观。所以就搜索了一下各种软件,最终选择使用python的matplotlib。原因也是因为python使用起来比较方便,虽然R才是分析数据的首选,不过,没有R的基础,所以也就不再尝试了。

        首先要说它的安装,本来想在它的官网上下载来安装,无奈,始终无法进行下载。最终,无意间发现了Unofficial Windows Binaries for Python Extension Packages,里面的库很全,在进行安装时,所提示缺少的库,在其上面都能够找到,不错。安装不用多说了,首先是有一款python,然后就是找属于它的matplotlib、numpy等等。我为了方便,都是在上面给出的网站,下载的exe程序,只要点击安装即可。

        安装完成后,便尝试画图,起初也没有什么问题,直至尝试向图片中添加中文,便有乱码出现。网上的主流方法是修改matplotlibrc文件,如下:

    1,找到

    #font.family          : sans-serif

    去掉注释

    2,找到

    #font.sans-serif     : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

    修改为

    font.sans-serif     : Microsoft YaHei ,Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

    即去掉注释,并在配置值中添加 Microsoft YaHei ,

    3,在windows下搜索msyh.ttf,即微软的雅黑字体,

    并将msyh.ttfcopy到python按照目录下的

    x:/install_dir/Lib/site-packages/matplotlib/mpl-data/fonts/ttf

    目录

    其中x:/install_dir是python的安装目录

    我在按上述操作的时候,遇到的问题:首先是在整个电脑全盘搜索都没有发现msyh.ttf文件,倒是将Microsoft YaHei UI 字体文件拷贝到python相应目录下的时候发现msyh.ttf,不过按照同样的方法,把fontlist.cache中对应的Microsoft YaHei的值改为msyh.ttc也是徒劳。把msyh.ttc拷贝到python路径下的ttf文件夹下也是不行。后来,有尝试使用楷体的ttf文件:在fontlist.cache中搜索楷体ttf文件对应的变量名‘KaiTi’,然后在也是按照上述的步骤操作,在matplotlibrc中修改也是徒劳。

    下面是另一种方法:(解决matplotlib图像中文显示问题

    1. 找到matplotlib安装目录,比如C:Developmentpython26Libsite-packagesmatplotlibmpl-data目录下的matplotlibrc文件,找到#font.sans-serif     : …这一行,把后面的修改为’nothing’,这样做是强制让系统无法找到英文字体,而是用matplotlib默认字体Vera.ttf替换(不做这一步,我测试了也是可以的!)

    1
    #font.sans-serif     : nothing

    2. 同个文件中找到#verbose.level  : silent这行。把silent修改为debug,这样做是为了看更详细的输出.(不做这一步,我测试了也是可以的!)

    1
    #verbose.level  : debug

    3. 找到字体目录C:Developmentpython26Libsite-packagesmatplotlibmpl-datafonts tf下的Vera.ttf。这里我们用中文楷体可以从windows/system32/fonts拷贝过来,直接张贴到前面的ttf目录下,然后更名为Vera.ttf,相当于用中文的字体替换掉之前的英文字体,偷龙转凤!!

    4. 程序中指定文件编码# -*- coding: utf-8 -*- ,并且确保要输出的中文是unicode形式,检查是否为unicode代码:isinstance(s, unicode)。

    上述操作,其实只要将Vera.ttf文件替换掉即可,不用修改matplotlibrc文件也是可行的。只是担心以后会有什么副作用。。。

  • 相关阅读:
    磁盘及分区管理
    用户和文件权限管理
    分割文件命令split
    去除重复命令uniq
    数据连接命令join
    数据剪切命令cut和数据粘贴命令pastte
    排序命令sort
    koa-router
    koa入门
    require.ensure的用法;异步加载-代码分割;
  • 原文地址:https://www.cnblogs.com/idealing/p/3611361.html
Copyright © 2011-2022 走看看