参考文章:Matplotlib中文乱码问题解决方案 - 知乎 (zhihu.com)
1.前言:
因为matplotlib中没有中文字体文件,所以需要自己下载字体文件后补充进去。
以“仿宋_GB2312”为例介绍,这里是仿宋_GB2312的字体文件。
链接:https://pan.baidu.com/s/1p8r3Q1iPVJCXW4PGjwSH8g
提取码:vfd2
2.可行测试:
首先,使用改行代码根据控制台的输出找到matplotlib包所在的配置文件的路径。
import matplotlib
print(matplotlib.matplotlib_fname())
# 输出matplotlib包所在的配置文件的路径
进入下图的路径中,可以看到有一个“fonts”文件,这个文件里存放的就是matplotlib包所包含的字体文件,里面并没有中文字体,所以将之前下载的“仿宋_GB2312”文件复制进去。
注意:这个字体文件的命名不能含有中文,所以将文件命名为“fangsong_GB2312”
其次,在程序开头添加如下代码测试是否可以正确使用中文字体,如果可以测试阶段则结束。
plt.rcParams['font.sans-serif'] = ['fangsong_GB2312']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
3.根本解决方法:
首先,回到matplotlib包的路径,使用记事本方式打开“matplotlibrc”文件。
其次,找到 #font.sans-serif,去掉前面的#,并在:后面写上在准备工作加入的中文字体的名 称fangsong_GB2312
接着,找到#axes.unicode_minus,去掉前面的#,并在:改为False
注意:修改完毕后记得保存关闭。
最后,可以使用everything软件找到“.matplotlib”文件,应该是在c盘的user路径下。
打开该路径下的文件夹,删除tex.cache文件和fontList.json文件
一顿操作完后,即可删掉第二步中测试的代码,最后重启即可解决问题。