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就会因为缓冲而暂时没有效果,重启下即可。

猜你喜欢

转载自blog.csdn.net/qq_43083284/article/details/84532114
今日推荐