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安装目录为:
{MLP_HOME}/mpl-data/
- 准备一个字体库文件
准备一个字体库文件,我找到的是msyh.ttf
- 拷贝字体库到系统数据目录
把字体库拷贝到数据存放目录下的fonts/ttf目录,既:${MLP_HOME}/mpl-data/fonts/ttf
- 获取字体名
确认字库的字体名,可以根据经验,网络百度得到字体的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
- 测试
可以在程序中测试,某些环境可能因为缓冲滞后,只需要重启环境即可。
比如:ipython就会因为缓冲而暂时没有效果,重启下即可。