我这个傻子的matplotlib学习过程很神奇:
刚开始,找几个教程,呕吼,简单,plt.*** 一顿写。画完了。遇到坐标啊之类的细节不会调?
打开谷歌,要啥搜啥。
我最开始觉得这样蛮好的,这是一个很容易学的lib嘛。
然后问题出现了,matplotlib最烦人的地方就是,同样一个目标,你可以有N种不同的方法去实现他。比如说哦,加标题:
plt.set_title() 可以吧。
ax.title.set_text('title') 也可以吧。
ax.set_title()也可以啊。
所以到底要用哪个??
当你在网上搜索答案的时候,你会遇到各种实现的方法,如果你只是单纯的把找到的答案copypaste,那总有一天你会和我一样崩溃。感觉自己就是个没有谷歌就不会画图的傻子。。。
所以,如果你:
- 学习matplotlib的时候是从标题类似于"五分钟教你matplotlib画图” 这种教程开始的
- 起码知道这一句 'import matplotlib.pyplot as plt'
- 遇到稍微复杂的细节就要一顿查,遇到修改xy坐标,名称,等等就头大
- 打开matplotlib的官方指南,不止一次,但是一脸懵逼
- 在这几个词 figure, axes, axis 在matplotlib出现时就一脸完了的表情
那么你不是一个人。我一直和你在一起。
所以这份指南是用来(尝试)解决这个问题的。我们花短短的时间,来从根本上了解一下matplotlib的架构,各种名词是什么意思,一个正常的画图程序是什么。
plt.***和ax.***的区别
我认为所有不先讲清楚plt.***和ax.*** 两种画图方式的区别的教程都是耍流氓。一上来就告诉你,plt.figure(), plt.plot(), plt.show(),这么画就对了的,都是不负责任的表现!
- 在matplotlib中,有两种画图方式:
- plt.figure(): plt.***系列。通过http://plt.xxx来画图,其实是取了一个捷径。这是通过matplotlib提供的一个api,这个plt提供了很多基本的function可以让你很快的画出图来,但是如果你想要更细致的精调,就要使用另外一种方法。
plt.figure(1)
plt.subplot(211)
plt.plot(A,B)
plt.show()
- fig, ax = plt.subplots(): 这个就是正统的稍微复杂一点的画图方法了。指定figure和axes,然后对axes单独操作。等下就讲figure和axes都神马意思。
fig, ax = plt.subplots()
ax.plot(A,B)