2016-02-28 61 views
14

我对matplotlib并不是很陌生,我非常惭愧地承认,我一直使用它作为获取解决方案的工具,尽可能快捷方便。所以我知道如何获得基本的情节,子情节和东西,并且有不少代码可以不时重复使用......但是我没有“深刻的(知识)”matplotlib了解matplotlib:plt,figure,ax(arr)?

最近我以为我应该改变这一点,并通过一些教程自己工作。但是,我仍然对matplotlibs plt,fig(ure)ax(arr)感到困惑。真的有什么区别?

在大多数情况下,对于一些“quick'n'dirty”密谋我看只用pyplot as plt和人plt.plot直接打印。因为我有多重的东西往往情节,我经常使用f, axarr = plt.subplots() ...但最时候,你看到的只是代码将数据放入了axarr并忽略数字f

所以,我的问题是:什么是matplotlib何时使用工作一个干净的方式plt只,是什么或如何处理一个figure是用于?是否应该只包含数据的子图?或者它是否适用于所有类似于样式,清理绘图,......,子图内的所有操作?

我希望这不是广泛的。基本上我正在征求一些关于plt < - >fig < - >ax(arr)(以及何时/如何正确使用它们)的真实目的的建议。

教程也将受到欢迎。 matplotlib文档对我来说相当困惑。当人们搜索真正具体的东西时,比如缩放图例,不同的绘图标记和颜色等等,官方文档非常精确,但在我看来,一般信息并不是那么好。太多不同的例子,没有真正的目的解释......看起来或多或少像所有可能的API方法和论据的大列表。

+0

http://matplotlib.org/faq/usage_faq.html#parts-of-a-figure是一个很好的开始。 – tacaswell

回答

9

pyplot是matplotlib中的'scripting'级别的API(其最高级别的API用matplotlib做了很多工作)。它允许你以类似的方式使用程序接口来使用matplotlib,就像你可以用Matlab一样。 pyplot具有所有函数委托给(@tacaswell dixit)的“当前图”和“当前坐标轴”的概念。因此,当您使用模块pyplot上提供的功能时,您正在绘制“当前图”和“当前轴”。

如果您想对您的绘图位置/内容进行“细粒度”控制,那么您应该使用面向对象的API,使用FigureAxes的实例。

pyplot中的可用函数在Axes中具有等效方法。

从回购anatomy of matplotlib

  • Figure在这个层次结构中的顶级容器。这是整个窗口/页面,一切都在绘制。你可以有多个独立的数字,并且Figure可以包含多个轴。

但是......

  • 大多数绘图发生在一个Axes。这些轴实际上是我们绘制数据的区域以及与其相关的任何刻度/标签/等等。通常情况下,我们会设置Axes与调用子图(其中Axes定期网格),所以在大多数情况下,AxesSubplot是同义词。

  • 每个Axes都有一个XAxis和一个YAxis。这些包含如果你想知道你可以访问这个link情节的解剖蜱,蜱位置,标签等

0
  • pyplot是MATLAB像API对于那些谁是熟悉MATLAB,并希望进行快速和肮脏的阴谋
  • figure是为那些谁不关心MATLAB风格绘制面向对象的API

所以你可以使用任何一个,但可能不是两个在一起。

+0

'pyplot'完全依据OO API实现,因此您可以混合搭配。 – tacaswell

+0

那么'pyplot'和'figure'之间的区别在哪里呢? “pyplot”是否会弹出整个窗口,并只显示窗口中包含的图像? – daniel451

+0

一般而言,iPython的'pyplot'。 python脚本的'figure'。虽然你可以混合搭配,但我觉得这不太吸引人。 – Hun