zoukankan      html  css  js  c++  java
  • Ubuntu下matplotlib的中文显示

    真真地被matplotlib的中文显示折磨的不行了。简要记下解决方案,防止以后重新配又是蛋疼菊紧。

    我的环境:系统是Ubuntu 13.04,Python是系统自带的,matplotlib是apt安装的。中文字体以前有装过。

    首先是编码问题

    在Python代码的第二行加上编码声明(编码声明可以放在第一行或者第二行,但是第一行放shebang了):

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

    顺便记一下在Emacs下如何查看当前编码:

    M-x describe-coding-system

    然后是字体问题

    将/etc/matplotlibrc复制到~/.matplotlibrc/。如果配坏了就删了~/.matplotlibrc/matplotlibrc重来。

    在matplotlibrc里配置字体:

    font.family: sans-serif
    font.sans-serif: WenQuanYi Micro Hei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

    添加了文泉驿微米黑的中文字体。运行程序,仍然是方块- -

    查看系统有没有文泉驿微米黑字体:

    fc-list | grep WenQuanYi

    有这个字体:/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei,文泉驛微米黑,文泉驿微米黑:style=Regular

    再查看matplotlib找到了这个字体没:

    cat ~/.matplotlib/fontList.cache | grep WenQuanYi

    没有……

    --------------------------------

    猜测原因:matplotlib查找系统字体的时候不匹配ttc字体文件。

    cat ~/.matplotlib/fontList.cache | grep '.ttc'

    没有输出。

    解决方法一

    暴力方法,直接把ttc字体改成ttf字体:

    sudo cp wqymicrohei.ttc wqymicrohei.ttf

    删除字体缓存fontList.cache,重新运行,可以显示中文了。但是保存成eps图片出错:TrueType font is missing table。因为那个ttf根本就不是ttf文件……

    解决方法二

    找个在线转换网站将ttc字体文件转成ttf文件。这个是我用的网站:http://www.files-conversion.com/font-converter.php

    将转换后得到的ttf文件拷到/usr/share/fonts下。删除fontList.cache,重新运行,可以显示中文,也能保存eps图片了。

    终极解决方案应该是让matplotlib能自动载入ttc字体文件,但是没搜到怎么配置。有没有朋友知道怎么弄的分享下?

    Linux下的软件中文支持仍是个问题啊。

  • 相关阅读:
    五种常见的 PHP 设计模式(收藏)
    写年度工作总结
    关于window.open和window.showdialog返回值的问题
    50个令人叹为观止的JavaScript应用站点[转]
    10大免费FLV播放器下载[转]
    6个去掉图片上的文字的技巧实用简单
    mysql命令大全(转)
    10款替代Windows Media Player的播放器
    Editplus FTP远程访问Ubuntu
    C++ 元编程 Meta Programming
  • 原文地址:https://www.cnblogs.com/skabyy/p/3461229.html
Copyright © 2011-2022 走看看