1. 程式人生 > >python matplotlib 中文顯示引數設定

python matplotlib 中文顯示引數設定

最近在學習python著名的繪圖包matplotlib時發現,有時候圖例等設定無法正常顯示中文,於是就想把這個問題解決了。

PS:本文僅針對Windows,其他平臺僅供參考。

原因

大致就是matplotlib庫中沒有中文字型。1
我安裝的anaconda,這是對應的matplotlib的字型所在資料夾(怎麼找到matplotlib配置資料夾所在,下面解決方案會敘述,easy man~)。

C:\Anaconda64\Lib\site-packages\matplotlib\mpl-data\fonts\ttf

解決方案

現在整理一下我認為比較好的解決方案:

  • 每次編寫程式碼時進行引數設定

#coding:utf-8
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標籤
plt.rcParams['axes.unicode_minus']=False #用來正常顯示負號
#有中文出現的情況,需要u'內容'
  • 一勞永逸(推薦)

import matplotlib
matplotlib.matplotlib_fname() #將會獲得matplotlib包所在資料夾

然後進入C:\Anaconda64\Lib\site-packages\matplotlib\mpl-data

該資料夾下就能看到matplotlibrc配置檔案。2

1)開啟該配置檔案,找到下面這行:

#font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif

然後,將前面的註釋去掉!
2)找中文字型放到matplotlib字型庫中。
在Windows資料夾下:C:\Windows\Fonts\Microsoft YaHei UI

複製該字型,然後貼上到C:\Anaconda64\Lib\site-packages\matplotlib\mpl-data\fonts\ttf資料夾,並給它重新命名為Vera.ttf

註明:這一步的作用其實就是將matplotlib中一個預設的字型替換為我們複製過來的中文字型,將這個中文字型命名改為matplotlib中有的字型名。3

其實,還有其他方案45,但是貌似在我這兒沒成功。

補充

座標軸的負號正常顯示6

#去掉了註釋符號,同時,改為False
axes.unicode_minus  : False

舉例

#coding:utf-8
import matplotlib.pyplot as plt
plt.plot((1,2,3),(4,3,-1))
plt.xlabel(u'橫座標')
plt.ylabel(u'縱座標')
plt.show()