首先我们要明确seaborn是基于matplotlib的,我们要先学会解决matplotlib中文乱码的问题:
这个问题,在其他的一些博文中都有,我这里就简单的介绍一下:
一.matplotlib中文乱码根本解决办法:
1.首先在你编译的环境下进行输入一下代码:
import matplotlib print(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中文乱码解决的问题,是我自己发现的,所以纪念一下。然后呢,第一次写,会比较啰嗦,主要是怕有些人看不太懂。因为有的时候,我看别人的文章我就看不懂,哈哈哈哈。好了,谢谢大家的支持,这感觉还蛮好的