python matplotlib 中文顯示引數設定
阿新 • • 發佈:2019-02-15
最近在學習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
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
補充
座標軸的負號正常顯示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()