想要分析一批數據,畫出圖形會比較直觀。所以就搜索了一下各種軟件,最終選擇使用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:\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文件也是可行的。只是擔心以后會有什么副作用。。。