您的位置:首页 > 软件问答

国语乱码中文字幕(算法工程师教你从根本上解决jupyter notebook画图中文乱码的问题)

导读前言不知道大家有没有使用过网页端代码交互神器Jupyter notebook,Jupyter是一个非盈利的开源项目,于2014年由IPython项目诞生,随着它的发展,它支持跨所有编程语言的交互式数据

前言

不知道大家有没有使用过网页端代码交互神器Jupyter notebook,Jupyter是一个非盈利的开源项目,于2014年由IPython项目诞生,随着它的发展,它支持跨所有编程语言的交互式数据科学和科学计算。它支持Python、R等语言,写起代码非常方便,小编在工作和日常中非常喜欢使用它,界面如下图所示。

最近有一个朋友问我,他在jupyter notebook里面画图时,遇到中文乱码问题,回想起来当年小编刚开始写Python时也常遇到这种问题。相信刚开始使用jupyter的朋友肯定也会遇到类似的问题,所以小编今天想谈一谈使用Python画图遇到中文乱码应该怎么解决。

要分清楚乱码的原因

以Python为例,首先大家要明白Python有Python2和Python3之分,由于Python2的编码风格,对中文非常不友好,导致编码错误的问题出现很多,Python相对友好很多,在Python2中,对于中文我们要明白utf-8-->unicode-->gbk这样的套路,当然今天的目的主要是讲解画图时候的中文乱码。我们先看字体代码文件。

#获取字体文件路径import matplotlibmatplotlib.matplotlib_fname()

这是我的配置文件路径:

这就是系统字体文件,通过代码发现DejaVu Sans是系统默认字段。

因此很多情况下会出现中文乱码的问题。怎么解决这个问题呢?

解决问题的办法

1、引入外部字体

这可能是比较笨的一种办法,但是可以解决乱码的一些问题

#加入外部引入中文字体的代码from matplotlib.font_manager import FontProperties# font = FontProperties(fname='./SimHei.ttf', size=10)

这样可以在实际的画图中设置字体为外部引入的字体。

2、Python中设置字体

这种办法基本可以解决Python2中中文画图乱码的问题,直接在画图之前引入下面两句代码

plt.rcParams['font.sans-serif'] = [u'SimHei']plt.rcParams['axes.unicode_minus'] = False

3、从系统中获取中文字体

直接加上下面一句代码

plt.rc('font',family='SimHei',size=10)

但是这种方法有时候没有用,看下面:

出现这种结果的原因可能是系统文字中根本没有中文字体或者还没有配置。

4、重新配置中文字体

(1)首先获取配置文件目录

#获取配置文件路径import matplotlibmatplotlib.matplotlib_fname()

(2)将下载好的中文字体文件加入到下面目录

(3)修改配置文件matplotlibrc

(4)重启jupyter

进过上面4步操作,应该就可以解决jupyter画图中文乱码的问题了。

5、投机取巧操作

有一些朋友反映经过方法4的操作之后还是没有解决中文乱码的问题,what? 经过上面方法4的操作居然没有解决这个问题,小编心中顿时有千只马飞过...继续解决问题,小编重新看了字体设置对应的代码块,发现虽然经过方法4的配置,字体设置的底层由于方法写死了,根本没有获取到中文字体,它认准的还是DejaVu Sans,这时候可以想着去修改代码,但是小编有一个更好的办法,既然你就是认定了DejaVu Sans,没问题我把我的中文字体文件SimHei.ttf改名为DejaVuSans.ttf,中文乱码的问题不就解决了。小编测试了下,的确解决了。

总结

写代码的过程中免不了会遇到很多坑,我们需要保持一种求索的精神,耐心的对待每一个BUG,本文从多方面去讨论了解决Python中文画图乱码的问题,希望这篇文章对大家有帮助,更多的问题可以在评论区或者私信和我交流。

喜欢我的朋友可以关注我们同名微信公众号【机器学习与数据挖掘】

免责声明:本文由用户上传,如有侵权请联系删除!