今天在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、大功告成!
参考了以下大神的文章: