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下的軟件中文支持仍是個問題啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM