Matplotlib
是Python
的一个2D绘图库,许多小伙伴第一次使用图表绘制时,会发现中文乱码或者小方块的情况
原因是Matplotlib
默认字体并不包含中文,所以必须设置为中文字体
准备工作:
- 系统:
Windows
- 环境管理器:
Anaconda
- IDE:
Jupyter notebook
1.编写如下代码,获取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.加入中文字体
- 打开文件后可以看到满屏的字体文件,但没有一个是支持中文的
- 这时我们需要在网上下载一个中文字体,小伙伴们下载自己喜欢的字体,这里以SimHei为例
- 把中文字体文件放到文件夹里
到此,准备工作结束。解决方案有以下两种:
一、简单粗暴型
每次绘制图表前输入以下代码
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题
sns.set(font='SimHei')
# Seaborn中设置字体-黑体,解决Seaborn中文乱码问题
值得注意的是,输入的字体名称必须和上面准备工作中加入的字体文件名称一致
二、一劳永逸型
1.根据上面准备工作获取matplotlib
包所在的配置文件的路径,打开matplotlibrc
文件(以记事本方式或其他编辑器方式打开)
D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc
2.找到#font.sans-senrif
,去掉前面的#
,并在:
后面写上在准备工作加入的中文字体的名称SimHei
3.找到#axes.unicode_minus
,去掉前面的#
,并在:
改为False
修改完毕后记得保存关闭,然后重新启动Jupyter notebook,等待奇迹的发生
-
小伙伴们可以根据自己的情况,选择一种解决方案