关于艺术家在matplotlib层次结构中的位置的困惑

BFi*_*Fir 4 python matplotlib

在此期间,我正在使用matplotlib.我研究了很多例子,并且能够修改它以满足我的一些需求.但我想更好地了解库的一般结构.出于这个原因,除了在网上阅读了很多教程之外,我还购买了Tosi的电子书"Matplotlib for Python Developers".虽然它充满了很好的例子,但我仍然没有完全掌握所有不同层次之间的关系.

该书清楚地解释了matplotlib有3个主要的"模式":

1)pylab,与Matlab类似地工作

2)pyplot,以程序方式工作

3)完整的OO系统

关于面向对象系统的目标,该书列出了3个级别:

1)FigureCanvas,图实例的容器类

2)图,Axes实例的容器

3)轴,包含基本元素的区域(线,点,文本......)

问题是,通过阅读官方文档,我也遇到了后端和艺术家的概念.虽然我理解他们的基本逻辑,但我对他们对以前的分类的角色方面感到很困惑.特别是,艺术家是否位于FigureCanvas和Figure之间的中间层,或者这种层次结构在这种情况下是不合适的?

我将很感激收到一些澄清,最后还提到我可能错过的其他文件.谢谢.

tac*_*ell 8

我不喜欢那些层

  • pylab:大规模的命名空间转储一切从拉pyplotnumpy.它不是一个"层",而是一个非常杂乱的名称空间.
  • pyplot:基于状态机的图层(它知道你的'当前轴'和'当前图'是什么,并将功能应用到那些轴/图.你应该在你在交互式终端(除了plt.subplotsplt.figure为设置图形/轴对象).在这个图层之间产生一种干扰并且pylab是愚蠢的.就是让它像"MATLAB"一样的层
  • OO层:您应该在所有脚本中使用它

Figures是顶级容器对象.它们可以包含Axes对象和Artist对象(从技术上讲Axes Artists的,但对于教学起见到区分它是有用Axes的图形对象和其他艺术家(如text那些在对象)Figure,但不具有关联Axes),并了解Canvas对象.每个都Axes可以包含更多Artists对象.这Artists是你想要放在图表上的有用的东西(线条,文字,图像等). Artists知道怎么画自己Canvas.当你调用fig.savefig(或将图形渲染到屏幕上)时,Figure对象会遍历它的所有子节点并告诉它们将它们自己绘制到它上面Canvas.

不同的Backends提供Canvas对象的实现,因此通过仅改变Canvas正在使用的对象,可以将相同的图形渲染到栅格或矢量图形.

除非您想要编写新的后端,否则其中许多细节并不重要,而且matplotlib会将它们隐藏起来,这就是它有用的原因.

如果这本书无法正确使用,我会把它带来的所有东西都拿出来.