一次解決 Matplotlib
繪圖中的中文亂碼問題
Matplotlib
Matplotlib
是一款非常常用的科學繪圖工具,然而其對中文的支援不好。常見的解決辦法分兩類,一類是每次程式設計都指定字型,具體做法可以參考解決Matlplotlib中文亂碼問題,它這裡隻介紹第二種方法,永久性的解決亂碼問題。具體的解決步驟包括:
- 查找
的配置檔案所在位置Matplotlib
-
下載下傳中文字型,并修改配置檔案包含該中文字型
具體方法如下:
- 利用下面代碼查找
的配置檔案所在位置。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
- 這裡要劃重點了:我現在的微軟雅黑字型的檔案名是
,但這裡我在上述第二行添加的字型名卻是
msyh.ttf
,很多教程都沒說明這一點,我當時就因為這走了不少彎路。
Mircosoft YaHei
- 如果不想修改配置檔案,也可以每次運作時通過設定參數實作:
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定預設字型
from matplotlib.font_manager import _rebuild
_rebuild() #reload一下
- 删除字元清單緩存,緩存的位置位于
,其中~/.cache/matplotlib
指的是使用者目錄。~