matplotlib中文乱码问题解决

今天在Mac系统下,使用Python matplotlib的时候,发现中文字体显示不正常,搜索了一堆资料之后,整理了一个流程。

字体我选用的是SimHei,ttf格式的文件,大家可以上网搜到。其他ttc、otf的格式没试验,大家可以自己尝试一下。另外Mac系统下默认是找不到需要的字体的真实名称的,这里建议大家使用一个软件叫“字体浏览”https://apps.apple.com/cn/app/%E5%AD%97%E4%BD%93%E9%A2%84%E8%A7%88-%E9%A2%84%E8%A7%88%E5%AD%97%E4%BD%93%E6%95%88%E6%9E%9C/id926109336?mt=12

可以从苹果自己的应用商店里面下载到。

假设你已经下载好了需要的中文字体,且知道了这个字体的名称,以下开始正文:

1、获取matplotlib包所在的目录

import matplotlib
print(matplotlib.matplotlib_fname())

例如我的在:/Users/xxx/Library/Python/3.7/lib/python/site-packages/matplotlib/mpl-data/matplotlibrc

2、修改该目录下的matplotlibrc文件,找到

#font.family
#font.sans-serif

取消注释,并且在 font.sans-serif 的最后面加上你的字体名称,例如

font.sans-serif     : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif, SimHei

3、通过 访达 访问以下路径:

~/.matplotlib/

这里是matplotlib的缓存文件,手动删除里面所有东西 

4、代码中对mathplotlib进行配置,替换中文字体问自己的字体

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#这里是你的字体名称
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号,我也不知道这个用来干嘛的

5、大功告成!

参考了以下大神的文章:

https://blog.csdn.net/qq_34454366/article/details/95311229

https://www.jianshu.com/p/8ed59ac76c06 

发布了6 篇原创文章 · 获赞 0 · 访问量 366

猜你喜欢

转载自blog.csdn.net/qq_36071963/article/details/103427390