首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib Axes.plot() vs pyplot.plot()

matplotlib Axes.plot() vs pyplot.plot()
EN

Stack Overflow用户
提问于 2017-04-18 21:05:49
回答 5查看 57.1K关注 0票数 39

Axes.plot()pyplot.plot()方法有什么区别?其中一个使用另一个作为子例程吗?

看来我的密谋选择是

代码语言:javascript
运行
复制
line = plt.plot(data)

代码语言:javascript
运行
复制
ax = plt.axes()
line = ax.plot(data)

甚至是

代码语言:javascript
运行
复制
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
line = ax.plot(data)

是否有一种比另一种更可取的情况?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-04-18 21:46:45

对于绘制一幅图,最佳实践可能是

代码语言:javascript
运行
复制
fig = plt.figure()
plt.plot(data)
fig.show()

现在,让我们来看看问题中的3个例子,并解释它们所做的事情。

  1. 获取当前图形和轴(如果不存在,它将创建一个新的)并绘制到它们中。 line =plt.plot(数据)
  2. 在您的例子中,这种行为与以前一样,都是显式地声明绘图的轴。 ax = plt.axes() line =ax.plot(数据)

如果您想要绘制成多个轴(可能是一个图),这种使用ax.plot(...)的方法是必须的。例如,当使用子图时。

  1. 显式地创建新的图形--您将不会向前一个图形添加任何内容。显式创建一个具有给定矩形形状的新轴,其馀部分与2相同。 图= plt.figure() ax =fig.add_axes(0,0,1) line = ax.plot(data)

使用figure.add_axes可能存在的问题是,它可能向图形中添加一个新的axes对象,这将覆盖第一个对象(或其他对象)。如果请求的大小与现有大小不匹配,则会发生这种情况。

票数 29
EN

Stack Overflow用户

发布于 2017-04-18 22:11:33

基本上没有区别。plt.plot将在某个时候(在确保有一个图形和一个轴可用于绘图之后)从该axes实例调用plot函数。

因此,主要的区别就在于用户的身边:

  • 您想要使用类似Matlab的状态机方法吗?它可以为简单的绘图任务节省一些代码行吗?然后使用pyplot
  • 您是否想要完全控制使用更仿生的面向对象方法进行绘图?然后明确地使用像轴这样的对象。

您可能需要阅读matplotlib 使用指南

票数 13
EN

Stack Overflow用户

发布于 2019-06-20 19:57:40

Pyplot的绘图方法可以应用于Pyplot根(pyplot.plot())或轴对象(axes.plot())。

直接在Pyplot库(pyplot.plot())上调用绘图函数将创建一个默认的子图(图和轴)。在axes对象(axes.plot())上调用它要求您已经创建了自己的axes对象,并将图形放到自定义的绘图空间中。

虽然pyplot.plot()易于使用,但是如果您创建一个axes对象axes.plot(),您可以更好地控制您的空间(并且能够更好地理解与其他库的交互)。

Axes.plot()返回一个axes对象。每个axes对象都有一个父图形对象。axes对象包含绘图方法以及大多数自定义选项,而图对象存储所有图形级属性,并允许绘图作为图像输出。

如果您使用pyplot.plot()方法并希望开始自定义您的轴,您可以找到它通过调用pyplot.gca()来“获取当前轴”而创建的默认轴对象的名称。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43482191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档