数据分析之路

Matplotlib中文乱码问题解决方案

2018-08-07  本文已影响36人  Mr_喵

MatplotlibPython的一个2D绘图库,许多小伙伴第一次使用图表绘制时,会发现中文乱码或者小方块的情况

原因是Matplotlib默认字体并不包含中文,所以必须设置为中文字体

准备工作:

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.加入中文字体


把中文字体文件放到文件夹里

到此,准备工作结束。解决方案有以下两种:

一、简单粗暴型

每次绘制图表前输入以下代码

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

打开matplotlibrc文件.jpg

2.找到#font.sans-senrif,去掉前面的#,并在后面写上在准备工作加入的中文字体的名称SimHei

添加文字名称SimHei

3.找到#axes.unicode_minus,去掉前面的#,并在改为False

修改负号设置

修改完毕后记得保存关闭,然后重新启动Jupyter notebook,等待奇迹的发生

上一篇下一篇

猜你喜欢

热点阅读