Axes.plot()
和pyplot.plot()
方法之间有什么区别?是否使用另一个作为子程序?
似乎我的绘图选项是
line = plt.plot(data)
或
ax = plt.axes()
line = ax.plot(data)
甚至
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
line = ax.plot(data)
是否有可能优先使用一个而不是另一个?
答案 0 :(得分:9)
对于绘制单个图,最佳做法可能是
fig = plt.figure()
plt.plot(data)
fig.show()
现在,让我们看看问题中的3个例子并解释它们的作用。
获取当前的图形和轴(如果不存在则会创建一个新图形和轴)并绘制成它们。
line = plt.plot(data)
在您的情况下,行为与以前相同,并明确说明 情节轴。
ax = plt.axes()
line = ax.plot(data)
如果要绘制成多个轴(可能在一个图中),这种使用ax.plot(...)
的方法是必须的。例如,使用subplots。
明确地创建新图 - 您不会向前一个添加任何内容。 显式创建一个给定矩形的新轴,其余的是 与2相同。
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
line = ax.plot(data)
使用figure.add_axes
的可能问题是它可能会添加一个新的轴对象
到图中,它将覆盖第一个(或其他)。如果这发生了
请求的大小与现有大小不匹配。
答案 1 :(得分:4)
基本上没有区别。 plt.plot
将在某个时刻(在确定有一个图形和一个可用于绘图的轴之后)从该轴实例调用绘图函数。
所以主要区别在于用户方面:
pyplot
。您可能需要阅读matplotlib usage guide。
答案 2 :(得分:0)
Pyplot的绘图方法可以应用于Pyplot根(pyplot.plot())或轴对象(axes.plot())。
直接在Pyplot库(pyplot.plot())上调用绘图函数会创建一个默认子图(图和轴)。在轴对象(axes.plot())上调用它需要您已经创建了自己的轴对象,并将图形放置到该自定义绘图空间上。
虽然pyplot.plot()易于使用,但是如果创建轴对象axes.plot(),则可以更好地控制空间(并且更好地理解与其他库的交互)。
Axes.plot()返回轴对象。每个轴对象都有一个父图形对象。 axes对象包含用于绘制的方法以及大多数自定义选项,而Figure对象则存储所有图形级属性,并允许将图形输出为图像。
如果使用pyplot.plot()方法并想开始自定义轴,则可以通过调用pyplot.gca()来“获取当前轴”来找出它创建的默认轴对象的名称。
答案 3 :(得分:0)
python plt.plot():它将创建许多默认子图并保存许多代码行,并且易于理解
Axes.plot():使用axes对象将为您提供更多自定义绘图空间的功能
答案 4 :(得分:0)
如果这仍然相关,matplotlib的官方网站对这个问题有明确的答案。转到此链接的 "The object-oriented interface and pyplot interface" 部分。¶
本节清楚地回答了这个问题。使用 'fig, ax' 即面向对象的方法为自定义绘图提供了更多控制。另一方面,使用“pyplot”让我们对绘图的控制更少,但优点是它可以让我们免于编写更多代码行,并且在处理单个绘图时更容易和方便。
matplotlib 的官方文档表明----“使用哪种方法完全是个人的选择,没有比另一种偏好。但是,最好坚持一种方法以保持一致性。 “