天天看點

一次解決Matplotlib繪圖中的中文亂碼問題一次解決Matplotlib繪圖中的中文亂碼問題

一次解決

Matplotlib

繪圖中的中文亂碼問題

Matplotlib

是一款非常常用的科學繪圖工具,然而其對中文的支援不好。常見的解決辦法分兩類,一類是每次程式設計都指定字型,具體做法可以參考解決Matlplotlib中文亂碼問題,它這裡隻介紹第二種方法,永久性的解決亂碼問題。具體的解決步驟包括:

  1. 查找

    Matplotlib

    的配置檔案所在位置
  2. 下載下傳中文字型,并修改配置檔案包含該中文字型

    具體方法如下:

  3. 利用下面代碼查找

    Matplotlib

    的配置檔案所在位置。
import matplotlib
matplotlib.matplotlib_fname()
           

如我的機器上得到了路徑為:

/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/

4. 下載下傳中文字型,這裡我下載下傳的中文字型是微軟雅黑字型

msyh.ttf

,并将該字型放入這裡

/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/fonts/ttf

(這裡路徑與上一步得到的結果有關)

5. 打開配置檔案

/usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc

,主要修改一下三行。

#font.family ... //這裡将注釋符号#删除
#font.sans-serif ... //這裡将注釋符号#删除,并添加自己需要添加的字型。比如我添加的字型是微軟雅黑,則需要添加 Mircrosoft YaHei 
#axes.unicode_minus  : False
           

在我的電腦上,修改後的三行的結果為:

font.family         : sans-serif
font.sans-serif     : Microsoft YaHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus  : False 
           
  1. 這裡要劃重點了:我現在的微軟雅黑字型的檔案名是

    msyh.ttf

    ,但這裡我在上述第二行添加的字型名卻是

    Mircosoft YaHei

    ,很多教程都沒說明這一點,我當時就因為這走了不少彎路。
  2. 如果不想修改配置檔案,也可以每次運作時通過設定參數實作:
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定預設字型
from matplotlib.font_manager import _rebuild
_rebuild() #reload一下
           
  1. 删除字元清單緩存,緩存的位置位于

    ~/.cache/matplotlib

    ,其中

    ~

    指的是使用者目錄。