我并不是matplotlib的新手,我很惭愧地承认我一直把它作为一种工具,尽可能快速简便地获得解决方案.所以我知道如何获得基本图,子图和东西,并且有不少代码可以不时重复使用……但我没有matplotlib的“深层次知识”.
最近我想我应该改变这个并通过一些教程自己动手.但是,我仍然对matplotlibs plt,fig(ure)和ax(arr)感到困惑.真正的区别是什么?
在大多数情况下,对于一些“quick’n’dirty”绘图,我看到人们只使用pyplot作为plt并直接用plt.plot绘图.由于我经常使用多种东西进行绘图,我经常使用f,axarr = plt. subplots()…但是大多数时候你只看到将数据放入axarr并忽略图f的代码.
所以,我的问题是:什么是使用matplotlib的干净方式?何时仅使用plt,数字应该用于什么或应该用于什么?子图是否只包含数据?或者,对于样式,清理情节,……,在子图中,它是否有效且良好的做法?
我希望这不是广泛的.基本上我要求为plt< - >的真正目的提出一些建议.无花果< - > ax(arr)(以及何时/如何正确使用它们).
教程也是受欢迎的. matplotlib文档对我来说相当混乱.当人们搜索一些非常具体的东西时,比如重新标记一个图例,不同的情节标记和颜色等等,官方文档确实非常准确,但在我看来,一般信息并不是那么好.太多不同的例子,没有真正的目的解释……看起来或多或少像是所有可能的API方法和参数的大清单.
解决方法:
pyplot是matplotlib中的“脚本级”API(它是使用matplotlib做很多事情的*API).它允许您使用程序界面使用matplotlib,方法与使用Matlab进行操作相似. pyplot有一个’当前数字’和’当前轴’的概念,所有功能都委托给它(@tacaswell dixit).因此,当您使用模块pyplot上的可用功能时,您将绘制到“当前图形”和“当前轴”.
如果你想要“细粒度”控制你正在绘制的位置/什么,那么你应该使用图形和轴的实例来使用面向对象的API.
pyplot中可用的函数在Axes中具有等效方法.
来自repo anatomy of matplotlib:
>图是此层次结构中的*容器.这是整个窗口/页面,所有内容都是绘制的.您可以拥有多个独立的数字,数字可以包含多个轴.
但…
>大多数绘图都发生在Axes上.轴实际上是我们绘制数据的区域以及与之相关的任何刻度/标签/等.通常我们将设置一个Axes,调用subplot(将Axes置于常规网格上),因此在大多数情况下,Axes和Subplot是同义词.
>每个轴都有一个XAxis和一个YAxis.这些包含刻度线,刻度线位置,标签等.
如果你想知道情节的解剖,你可以访问这个link.