Matplotlib中文亂碼

    想要分析一批數據,畫出圖形會比較直觀。因此就搜索了一下各類軟件,最終選擇使用python的matplotlib。緣由也是由於python使用起來比較方便,雖然R纔是分析數據的首選,不過,沒有R的基礎,因此也就再也不嘗試了。python

    首先要說它的安裝,原本想在它的官網上下載來安裝,無奈,始終沒法進行下載。最終,無心間發現了Unofficial Windows Binaries for Python Extension Packages,裏面的庫很全,在進行安裝時,所提示缺乏的庫,在其上面都可以找到,不錯。安裝不用多說了,首先是有一款python,而後就是找屬於它的matplotlib、numpy等等。我爲了方便,都是在上面給出的網站,下載的exe程序,只要點擊安裝便可。windows

    安裝完成後,便嘗試畫圖,起初也沒有什麼問題,直至嘗試向圖片中添加中文,便有亂碼出現。網上的主流方法是修改matplotlibrc文件,以下:測試

1,找到字體

#font.family          : sans-serif網站

去掉註釋編碼

2,找到spa

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

修改成debug

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

即去掉註釋,並在配置值中添加 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:\Development\python26\Lib\site-packages\matplotlib\mpl-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:\Development\python26\Lib\site-packages\matplotlib\mpl-data\fonts\ttf下的Vera.ttf。這裏咱們用中文楷體能夠從windows/system32/fonts拷貝過來,直接張貼到前面的ttf目錄下,而後改名爲Vera.ttf,至關於用中文的字體替換掉以前的英文字體,偷龍轉鳳!!

4. 程序中指定文件編碼# -*- coding: utf-8 -*- ,而且確保要輸出的中文是unicode形式,檢查是否爲unicode代碼:isinstance(s, unicode)。

上述操做,其實只要將Vera.ttf文件替換掉便可,不用修改matplotlibrc文件也是可行的。只是擔憂之後會有什麼反作用。。。

相關文章
相關標籤/搜索