300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 解决python中matplotlib与seaborn画图时中文乱码的根本问题:

解决python中matplotlib与seaborn画图时中文乱码的根本问题:

时间:2021-08-30 19:02:29

相关推荐

解决python中matplotlib与seaborn画图时中文乱码的根本问题:

首先我们要明确seaborn是基于matplotlib的,我们要先学会解决matplotlib中文乱码的问题:

这个问题,在其他的一些博文中都有,我这里就简单的介绍一下:

一.matplotlib中文乱码根本解决办法:

1.首先在你编译的环境下进行输入一下代码:

import matplotlibprint(matplotlib.matplotlib_fname())

这样会输出,你所编译的环境下的matplotlib包中关于编码的相关文件,下面是我的输出:

/Users/yuyangchen/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc

2.运用终端命令打开这个路径下的文件,因为我自己使用的是mac,所以我是这样在终端输入的, 对于Windows的同学,可能会不一样,但是无论用哪种方法,打开这个文件就好了:

open /Users/yuyangchen/opt/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc

打开后这个文件里面长这个样子:

3.然后我们找到相应的位置进行修改,我这里就直接放出修改后的截图了:

这里主要进行了两处的修改:1.把font.family前面的'#'给删除,也就是解除了注释 2.把font.sans-serif前面的'#'也给删除了,并且在其后面加上了Arial Unicode MS (一种允许中文的字体,应该是不需要下载)

之后你就会发现,再去用matplotlib进行画图的时候,就不会出现中文乱码了(如果操作都正确的话,应该会是这样的,嘻嘻)。但是你会发现这个时候用seaborn去画图,还是可能会出现乱码的情况,问题来了,其实这是因为刚才说了seaborn是基于matplotlib去实现的,然后在运行的时候,seaborn的一些设置就会覆盖掉matplotlib中的一些设置,所以导致matplotlib不乱码而seaborn乱码。下面咱们就再去seaborn中去改一下它的设置吧!

二.seaborn中文乱码的根本解决办法:

这里的方法,我其实一直想找到,搜了很多博文,都是直接在写代码的时候去解决,这样我们写另外的代码的时候,还要把那段代码写上去,治标不治本。然后,我就想去直接像解决matplotlib乱码的问题一样,直接去改它的原文件,索性我就去看seaborn的源码,看了半天终于让我找到这个设置藏在哪里,我们来看看吧:

1.首先,我们要知道你的matplotlib包和seaborn包肯定是下载在同一文件下的,所以我就在上面的路径中去找就好了,下面是我的路径,我们可以看到前半部分跟matplotlib是一样的,说明在一个文件下,你们也对应的去找就好了:

/Users/yuyangchen/opt/anaconda3/lib/python3.8/site-packages/seaborn/rcmod.py

2.打开那个rcmod.py文件并且找到 font.family,和 font.sans-serif 定义的地方,我们会发现确实在font.sans-serif中少了我们之前在matplotlib的配置文件中添加的 Arial Unicode MS,在这里我们把它添加进去就好了,结果如图:

最后,我们把编译器关掉再重启或者重启电脑,我是重启电脑的,然后就好了,seaborn中文乱码的问题就解决了,这篇文章到此就结束了,谢谢观看。

注:这是我发的第一篇博客,里面的内容特别是seaborn中文乱码解决的问题,是我自己发现的,所以纪念一下。然后呢,第一次写,会比较啰嗦,主要是怕有些人看不太懂。因为有的时候,我看别人的文章我就看不懂,哈哈哈哈。好了,谢谢大家的支持,这感觉还蛮好的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。