Python绘图中文乱码问题——本质是字体不合适导致

在用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() 

是不是成功显示中文了呢?哈哈哈

发布了34 篇原创文章 · 获赞 20 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/G_B_L/article/details/100146546