对象名称
Matplotlib严格面向对象,其主要对象是图形和轴(我发现这个名称axes
有些误导,但可能只是我一个人)。
您可以将图形视为画布,通常指定其尺寸,并可能指定背景颜色等。您可以通过两种方式使用画布,图形,在其上放置其他对象(主要是轴,但是以及文本标签等),然后使用保存其内容savefig
。
你可以把中轴线作为一种瑞士军刀,一个方便的对象,提供了一个工具(例如.plot
,.scatter
,.hist
等)的一切,大部分。您可以使用多种不同的方法之一在图形中放置一,二,...多个轴。
该plt
接口
该PLT程序接口最初是模仿MATLAB™接口,但不是从面向对象的接口确实不同,即使你不直接引用的主要对象(即数字和轴),这些对象自动将其实例化,并且每个plt方法实质上都转换为对基础对象的方法之一的调用:例如,aplt.plot()
是a hidden_axes.plot
,aplt.savefig
是a hidden_figure.savefig
。
在任何时候,您都可以使用plt.gcf
和来处理这些隐藏对象plt.gca
,并且当其中一个对象方法尚未移植到plt名称空间中的方法时,有时这是必需的。
我想补充一点,plt名称空间还包含许多方便的方法,可以用不同的方式实例化图形和轴。
你的例子
第一种方式
plt.plot(x, y)
在这里,您仅使用plt界面,每个图中只能使用一个轴,但这就是您在探索数据时想要的,这是完成工作的快速方法...
第二路
ax = plt.subplot()
ax.plot(x, y)
在这里,您可以使用plt命名空间中的便捷方法为您的axes对象指定名称(和句柄),但顺便说一句,还有一个隐藏的图形。您以后可以使用axes对象来绘制,制作直方图等,可以使用plt界面进行所有操作,但是您还可以访问其所有属性并以更大的自由度对其进行修改。
第三种方式
figure = plt.figure()
new_plot = figure.add_subplot(111)
new_plot.plot(x, y)
在这里,您开始使用plt名称空间中的便捷方法实例化图形,然后仅使用面向对象的接口。
可以绕过plt便捷方法(matplotlib.figure.Figure
),但是您必须调整图形以获得更好的交互体验(毕竟,这是一种便捷方法)。
个人推荐
我建议在交互式会话的环境中使用裸露plt.plot
,plt.scatter
可能使用IPython及其%matplotlib
魔术命令,也建议在探索性的Jupyter笔记本环境中使用。
另一方面,面向对象的方法以及一些plt
便捷的方法是必经之路
- 如果您有一个永久性的问题,可以通过微调的子图的自定义安排彻底解决所有问题,
- 如果要将Matplotlib嵌入在编写的程序的UI中。
这些极端之间有一个很大的灰色区域,如果您问我该怎么办,我只会说“这取决于” ...