昨天折腾了这破问题一晚上,参照知乎上的问题下面的回答:
以及还有一些博客,还是一直解决不了。今天终于弄好了,来分享下怎么走的,方便以后需要的人可以少走点弯路,也为自己以后做个备份。
我的开发环境是 Windows10 + Anaconda3 + Pycharm。不过解决思想应该 linux,Mac也都差不多。
看到 @MichaelXoX 的答案,我这么偷懒的人,当然选择的是一劳永逸的解决方案啦!
我会基本操作,所以太长不看型:
首先把自己电脑上的windows支持中文的系统字体copy到malplotlib的字体中,再在matplotlibrc配置文件中设置一下支持,然后清除掉matplotlib以前的缓存,重启Python即可大功告成!
步骤如下:
Step1:找到matplotlibrc配置文件和fonts所在位置。
在python的控制台输入:matplotlib.matplotlib_fname(),从而得到matplotlib的配置文件所在位置,按此目录索引打开该文件夹,可以看到fonts文件夹和matplotlibrc配置文件,进入到fonts文件夹里的ttf文件夹,放着不动,等待下一步操作。图1:从Python的控制台得到文件夹位置图2:打开该文件夹
Step2:Copy中文支持字体到matplotlib的ttf文件夹。
找到windows上支持中文的字体文件夹:C:\Windows\Fonts,找一个支持中文的,比方说微软雅黑,黑体,楷体等等(我试过,此处其实无所谓ttc文件和ttf文件),将这个字体copy到Step1中的ttf文件夹中,我选的是微软雅黑。图3:找到windows下支持中文的字体
Step3:找到刚刚那个字体的英文名称。
直接点开后发现字体名称是中文的“微软雅黑”,不是英文没关系,给你一个对应表格。(昨晚一直弄不对其实就是卡死在这一步。)发现英文名是“Microsoft YaHei”。图4:字体中英文对照
Step4:配置matplotlibrc文件。
进入Step1中的matplotlibrc配置文件,找到大概211行的#font.sans-serif ,去掉#号,并在后面加上刚刚copy过来的字体的英文名称(注意不是文件的英文名称,比方说幼圆字体的文件名称是SIMYOU.ttf,但这并不是我们想要的,而是它的字体英文名称YouYuan),修改后保存。图5:修改matplotlibrc配置文件,添加中文支持字体
Step5: 清除之前的缓存。(其实我也没搞清楚到底需要不需要这一步,不过最好还是做这一步)
再Python控制台输入:matplotlib.get_cachedir(),得到缓存所在的文件夹。进入文件夹,删空里面的文件。图6:得到缓存所在文件夹图7:删空这些文件
Step6:开心地重启Python即可。
图8:图上的中文真漂亮,且来之不易
(2018年1月18号更新)
Step7:修改配置matplotlibrc文件解决负号不显示问题。
评论里 @旧信 提到了负号无法显示的问题,我今天用到了负号,发现显示的是一个方格,怎么解决呢?很简单,继续一劳永逸的办法,甚至不用重启Python(至少我这边是这样的),修改配置文件matplotlibrc,大概在330行,去掉前面的注释#号,将True改为False,保存修改好的文件,你的Python就可以显示负号了。图9:修改配置文件解决负号显示问题
声明:转载需联系本人。