“你的问题,我来帮”
本文转自数据分析师(Python)优秀学员 Mr.喵的知乎文章
摘要:Matplotlib中文乱码解决方案
关键词:Python 中文乱码 matplotlib 解决方案
文末分享字体文件,欢迎自取~
Matplotlib是Python的一个2D绘图库,许多小伙伴第一次使用图表绘制时,会发现中文乱码或者小方框的情况。
原因是Matplotlib默认字体并不包含中文,所以必须设置为中文字体。
准备工作:
系统:Windows
环境管理器:Anaconda
IDE:Jupyter notebook
编写如下代码,获取matplotlib包所在的配置文件的路径
import matplotlib
matplotlib.matplotlib_fname() #输出matplotlib包所在的配置文件的路径
D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc
2.根据上面的路径打开文件夹(根据自己实际的输出路径去操作):
D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\fonts\ttf
3.加入中文字体:
![d0649b82f4abd0d8a24f8748b808ac26.png](https://i-blog.csdnimg.cn/blog_migrate/e3b65baabe012b1c2c6e1ca6e85a93b0.jpeg)
打开文件后可以看到满屏的字体文件,但没有一个是支持中文的
这时我们需要在网上下载一个中文字体,小伙伴们下载自己喜欢的字体,这里以SimHei为例
把中文字体文件放到文件夹里
到此,准备工作结束。解决方案有以下两种:
一、简单粗暴型
每次绘制图表前输入以下代码:
import matplotlib.pyplot as pltimport seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei'] # Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决Matplotlib坐标轴负号'-'显示为方块的问题
sns.set(font='SimHei') # Seaborn中设置字体-黑体,解决Seaborn中文乱码问题
值得注意的是,输入的字体名称必须和上面准备工作中加入的字体文件名称一致。
二、一劳永逸型
根据上面准备工作获取matplotlib包所在的配置文件的路径,打开matplotlibrc文件(以记事本方式或其他编辑器方式打开)。
D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc
![87172a29627f259887d932c55dab5913.png](https://i-blog.csdnimg.cn/blog_migrate/541dea07aaa5e3ed4126bf9cb74506cd.jpeg)
2.找到 #font.sans-serif,去掉前面的#,并在:后面写上在准备工作加入的中文字体的名 称SimHei。
![965025e585fbfc63e0c6cd7cfe402caa.png](https://i-blog.csdnimg.cn/blog_migrate/b8c11134946c8c0ac79e3b03d4da2355.jpeg)
3.找到#axes.unicode_minus,去掉前面的#,并在:改为False:
![4591785f12ca0ab18425bcfe97c8ec4c.png](https://i-blog.csdnimg.cn/blog_migrate/9b0e11ae110123674c469fce4895ec0c.jpeg)
修改完毕后记得保存关闭。
C:\Users\Alice\.matplotlib
打开该路径下的文件夹,删除tex.cache文件和fontList.json文件。
![9eafc7af509bae1c0ba5dfa45cf9e96d.png](https://i-blog.csdnimg.cn/blog_migrate/08fb70e5bfa03b3674f7cb15f0fd4631.jpeg)
然后重新启动Jupyter notebook,等待奇迹的发生。小伙伴们可以根据自己的情况,选择一种解决方案。
扫码关注我们
关注送狗子表情包一张&精选python资料一份
用数据改变未来
江山万里,不及你的好看 ↓↓↓