1. 程式人生 > >Matplotlib漢字編碼的解決辦法

Matplotlib漢字編碼的解決辦法

Matplotlib編碼解決辦法可以採用兩種方式:
編碼中解決
設定matplot環境變數解決
一、編碼解決方式
編碼解決方式主要利用字型屬性管理器來解決,下面是程式碼說明:

#coding=utf-8
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
headers=[‘工作年限’,‘學歷’,‘職位’,‘職位ID’,‘薪水’,‘城市’,‘釋出時間’]
zn_font=fm.FontProperties(fname=“msyh.ttf”)
pd_reader=pd.read_csv(“jobs.csv”,encoding=“utf-8”)
pd_reader=pd_reader.dropna()
plt.figure(1,figsize=(15,8),dpi=80)
plt.xlabel(‘職位數’,fontproperties=zn_font)
plt.ylabel(‘城市’,fontproperties=zn_font)
#資料統計
pf=pd_reader.groupby(by=[“城市”],as_index=True).count()
plt.plot(pf[‘薪水’],color=‘r’,label=‘城市薪水統計’)
#漢化
ax=plt.gca()
for item in ax.xaxis.get_ticklabels():
item.set_fontproperties(zn_font)
plt.show()

二、設定環境變數解決

1.獲取matplotlib字型配置目錄

得到配置檔案目錄,與matplotlib系統的資料存放目錄的程式碼:

print(mpl.get_configdir())
print(mpl.matplotlib_fname())

上面第二個語句輸出:/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc
其中/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/mpl-data/就是資料存放目錄
假如:記matplotlib安裝目錄為: M

L P H O M E
{MLP_HOME},資料存放目錄就是: {MLP_HOME}/mpl-data/

  1. 準備一個字型庫檔案

準備一個字型庫檔案,我找到的是msyh.ttf

  1. 拷貝字型庫到系統資料目錄

把字型庫拷貝到資料存放目錄下的fonts/ttf目錄,既:${MLP_HOME}/mpl-data/fonts/ttf

  1. 獲取字型名
    確認字型檔的字型名,可以根據經驗,網路百度得到字型的family-name,下面使用程式碼獲取:

fp=fm.FontProperties(fname=“msyh.ttf”)
print(fp.get_family(),fp.get_name())

輸出的字型名:Microsoft YaHei

|-fp.get_name()函式的輸出,

|-get_family()輸出的配置的預設family name)

5.修改配置檔案

|-首先,配置檔案位置:${MLP_HOME}/mpl-data/matplotlibrc
|-然後,找到字型配置的位置:我的配置檔案在195行,我增加一行196,配置family如下:

195 #font.family : sans-serif

196 font.family : Microsoft YaHei

  1. 測試
    可以在程式中測試,某些環境可能因為緩衝滯後,只需要重啟環境即可。
    比如:ipython就會因為緩衝而暫時沒有效果,重啟下即可。