2021-12-19Matplotlib的基本逻辑

2021-12-19  本文已影响0人  hydro

Matplotlib设计的基本逻辑

Matplotlib跟我们绘画流程一样。 

from  https://zhuanlan.zhihu.com/p/32693665

使用一个工具,首先要理解其本后设计的逻辑,然后我们才知道如何下手,顺着工具的理念去用。不然就会显得非常奇怪。

Matplotlib涉及的逻辑基本上跟我们自己绘画的流程是一样的。

找一张纸或者一块画布;

调色等一系列前戏;

作画。

由于模拟了类似的过程,所以Matplotlib一共有三个基本的模块。

FigureCanvas

Renderer

Artist

这三个模块,分别实现了与我们真实作画一一对应的功能,当然必定是有些差别的。前两个模块把一些如何跟计算机底层交互的事情处理了,而我们绝大部分的工作,都是在利用Artist的接口。

Artist接口中包含了两类元素或者说是对象。一类是类似曲线Line2D,文字text,图像image这样一些最基本的元素。还有一类被称作容器的对象,比方坐标系Axes,坐标轴Axis等等。而这些我们在前面的文章中都有所涉及。

下面这张图,涵盖了Artist中所包含的元素,来自上面第二个链接。

简单地说,Artist中,我们经常使用或在无意识下经常使用的就是Axes坐标系这个对象。之前我们已经解释过,它可以生成一个坐标系。该坐标系是一种容器,我们可以画各种我们想画的图形,做各种标记,修改各种属性。可以说,在pyplot这个接口中,绝大部分的函数都来自于axes坐标系,或是axes坐标系某种属性的重新定义,比方plot,legend等函数。

另外一个我们经常打交道的元素叫做Axis坐标轴。它也是一个容器类,包含了坐标轴上的各种元素。比方刻度线,刻度值,坐标轴的名称等等。

所以只要我们弄清了Axes和Axis,基本上如何作图,如何修改就搞清楚了。

Python是一种高级编程语言,在Python中,一切皆为对象。因此Matplotlib继承了这一特点。画图的过程,提倡使用面向对象的写法。但是为了简单和可交互性,Matplotlib也提供了过程式或者命令式编程。这主要在Pylab中。

pylab和pyplot是Matplotlib中两个不同的部分。

pyplot是Matplotlib下的一个模块,它提供了画图所需的基本接口,提倡用面向对象的方式编程。比方说,一般我们画图的时候应该是这么一个流程

第一步,产生一幅图

fig=figure()

第二步,建立坐标系

ax=fig.add_axes()

第三步,画图

ax.plot()

第四步,显示

show()

pylab是和Matplotlib并行存在的一个包。它实际上导入了numpy和Matplotlib中相应的功能,大包提供一个可交互的画图环境。pylab主要在终端或者以过程式编程的方式使用,这也是我们大部分时候使用的方式。毕竟,我们需要一幅一幅图画,修改。其实每一次调用一个函数,就是要设定某个属性,类似于一个指令,因此不需要用面向对象的方式来考虑。

上一篇 下一篇

猜你喜欢

热点阅读