在Mac OS系统中的python中matplotlib画图的一系列问题

在Mac OS系统中的python中matplotlib画图的一系列问题

由于本人学习需要,所以今年刚从windows转到Mac OS,其中的不适应不言而喻,前几天下载了Anoconda,并配置了python3.6环境,安装了一系列的安装包,都没有出什么问题,但是正当我开始调试以前在windows跑的程序的时候,问题就来了…

问题一:Matplotlib无法在pycharm上画图的问题

导入其他库(如numpy,pandas),并跑了一些简单的程序都一切正常,唯独导入matplotlib库的时候,不管怎样也画不了图,直接上图:
在Mac OS系统中的python中matplotlib画图的一系列问题_第1张图片
在Mac OS系统中的python中matplotlib画图的一系列问题_第2张图片
不知道为什么总是报‘NSInvalidArgumentException’错误,上网百度了类似情况没能有效解决,也请问了其他用mac OS系统的师兄,他们都没有这个问题,瞬间崩溃(难道买的盗版?),后来看到一个博客,找到了解决办法(治标),如图:
在Mac OS系统中的python中matplotlib画图的一系列问题_第3张图片
一定要在导入matplotlib.pyplot库之前插入第1和2行,否则是无效的!!!
结果如图:
在Mac OS系统中的python中matplotlib画图的一系列问题_第4张图片
正当我欣喜之余,随便加了几个画图代码,结果却缺又出来一个问题…【心塞】

问题二:Matplotlib画图出现中文乱码问题

之前在我的windows电脑上使用Matplotlib画图出现中英文乱码问题,直接两句话就搞定了:

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

可可可是,到了Mac这里,根本不起作用【不是说好Mac适合用于编程开发的嘛mmp,怎么比windows还难搞定】
于是只能又去百度,各种各样的方法都去试了,却很少有能够很好解决的…哇,花了我一个早上的时间终于搞定了…【有一句mmp不知当讲不当讲】
亲测正确做法
第一步:
先下载中文字体,这里我下载的是黑体,好人做到底吧,提供一个字体的下载链接:
https://www.fontpalace.com/font-details/SimHei/
下载完成后安装,最终就是一个ttf格式的文件就可以了
第二步:
找到你的matplotlib安装包【对于刚入Mac小白的我又花了好久的时间】,为了还有像我这样小白的人避免再走弯路,直接贴所有详细过程:
打开Finder,找到Macintosh HD(如果没有,就打开Finder的偏好设置在Mac OS系统中的python中matplotlib画图的一系列问题_第5张图片
因为我是用Anaconda安装的,所以这里只介绍Anaconda安装下的Matplotlib的安装路径:anaconda3>>lib>>python3.6>>sites-packages>>matplotlib>>mpl-data>>fonts>>ttf,图片长这样:
在Mac OS系统中的python中matplotlib画图的一系列问题_第6张图片
最后一个就是我下载的字体SimHei,当然啦在此之前就是将我们先下载好的字体直接拖到这个文件夹里,就是上图所示!
第三步:
找到matplotlibrc文件,更改里面的3处配置,如图:
在Mac OS系统中的python中matplotlib画图的一系列问题_第7张图片
在Mac OS系统中的python中matplotlib画图的一系列问题_第8张图片
在Mac OS系统中的python中matplotlib画图的一系列问题_第9张图片
取消两个注释‘#’,将“True”改成“False”
最后一步:
这不也是最关键的,也是我找了很久才找到的解决方法:就是配置好了以上所有之后,我们需要重新加载一下我们的之前下载的字体:
代码如下:

from matplotlib.font_manager import _rebuild
_rebuild()

完成上述所有步骤就可以解决我所遇到的所有问题了【满脸的心酸啊】
最后贴一个成功的简单实例:

import matplotlib as mpl
mpl.use("TkAgg")
import matplotlib.pyplot as plt
import numpy as np
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
x=np.linspace(-5,5,1000)
y=np.log(1+np.exp(x))
plt.title(u'Softmax激活函数')
plt.plot(x,y)
plt.show()

结果:
在Mac OS系统中的python中matplotlib画图的一系列问题_第10张图片

参考链接
[1]: https://www.zhihu.com/question/25404709
[2]: https://www.if404.com/2018/01/18/matplotlib-chinese-unicode-support/
如果有更好的解决办法欢迎告知,不胜感激!!

你可能感兴趣的:(python入门)