.找到
| 代碼如下 |
複製代碼 |
|
#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替換 ( 不做這一步,我測試了也是可以的! )
| 代碼如下 |
複製代碼 |
|
#font.sans-serif : nothing
|
2. 同個檔案中找到#verbose.level : silent這行。把silent修改為debug,這樣做是為了看更詳細的輸出.( 不做這一步,我測試了也是可以的 !)
| 代碼如下 |
複製代碼 |
| #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檔案也是可行的。只是擔心以後會有什麼副作用。。。
再整理一種辦法
1.修改matplotlibrc檔案
進入Python安裝目錄下的Lib\site-packages\matplotlib\mpl-data目錄,開啟matplotlibrc檔案,刪除font.family和font.sans-serif兩行前的#,並在font.sans-serif後添加微軟雅黑字型(Microsoft YaHei),代碼如下:
matplotlibrc檔案修改Python
| 代碼如下 |
複製代碼 |
font.family : sans-serif
font.sans-serif : Microsoft YaHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
|
2.代碼中別忘了unicode編碼
matplotlib 範例程式碼Python
| 代碼如下 |
複製代碼 |
|
import matplotlib.pyplot as plt
plt.clf() # 清空畫布
plt.plot([1, 2, 3], [4, 5, 6])
plt.xlabel(u"橫軸")
plt.ylabel(u"縱軸")
plt.title("pythoner.com")<a href=""><img src="" alt="matplotlib樣本" width="300" height="226" class="alignnone size-medium wp-image-201" /></a>
plt.show() |