在用matplotlib绘图的时候,不论是用IDE还是jupyter notebook,若出现中文显示乱码问题,且你尝试了各种方法都失败的话,那大概率是因为没有中文字体,怎么办?当然是配置中文字体咯,请往下看,容我细细道来……
(该教程适用于windows,mac,linux平台,亲测有效)
step 1:下载中文字体simhei.ttf(windows和mac版本都有,linux与mac的字体都是.ttf格式的,共用)simhei字体
step 2:查看matplotlib 配置文件matplotlibrc的路径 ,在python环境下输入以下两行即可
import matplotlib
matplotlib.matplotlib_fname()
我电脑上的路径是/usr/local/lib/python3.6/dist-packages/matplotlib/mpl-data/matplotlibrc
step 3: 在终端上找到step2中的路径,并打开matplotlibrc文件
cd /usr/local/lib/python3.6/dist-packages/matplotlib/mpl-data/matplotlibrc
vim matplotlibrc
修改如下三处:
去掉font.family的注释符号#;去掉font.sans-serif的注释符号#,并添加中文字体SimHei;去掉axes.unicode_minus的注释,并将值True改为False
step 4:将下载的字体放在matplotlib配置文件下,文件路径如下
cd /usr/local/lib/python3.6/dist-packages/matplotlib/mpl-data/fonts/ttf
如果不是操作远程服务器的话,可以在mpl-data/路径下操作cd fonts/ttf,利用open .打开文件夹,将下载好的字体.ttf拷贝到此文件夹下,然后双击安装。
如果是ubuntu系统的话,还需要拷贝字体到路径usr/share/fonts 下
step 5:重载字体(此步骤有时可以省略)
在python环境下,运行如下两行代码
from matplotlib.font_manager import _rebuild
_rebuild() #reload一下
至此,大功告成,为了检查一下是否配好,可以运行如下代码,快速实验下:
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['simhei']#中文字体
plt.rcParams['axes.unicode_minus'] = False #解决保存图像是负号'-'显示为方块的问题
t = arange(-5*pi, 5*pi, 0.01)
y = sin(t)/t
plt.plot(t, y)
plt.title(u'中文标题')
plt.xlabel(u'X坐标')
plt.ylabel(u'Y坐标')
plt.show()
是不是成功显示中文了呢?哈哈哈