Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python plt.plot(x,y)和plt.show()是如何工作的?_Python_Python 3.x_Matplotlib - Fatal编程技术网

Python plt.plot(x,y)和plt.show()是如何工作的?

Python plt.plot(x,y)和plt.show()是如何工作的?,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,我想知道在plt.plot(x,y)和plt.show()之间进行的基本主干流程matplotlib.pyplot命令 要详细说明一下,这段代码: plt.plot(x , y) plt.show() 显示所需的图形(没有问题) 此外,守则: plt.plot(x , y) plt.plot(p , q) plt.show() 效果也不错它显示由列表x&y和p&q创建的两个图。 现在,我发现在ipython中动态编码时,有一些东西非常有趣 In [73]: plt.plot(x , y) #

我想知道在
plt.plot(x,y)
plt.show()之间进行的基本主干流程matplotlib.pyplot命令

要详细说明一下,这段代码:

plt.plot(x , y)
plt.show()
显示所需的图形(没有问题)

此外,守则:

plt.plot(x , y)
plt.plot(p , q)
plt.show()
效果也不错它显示由列表x&y和p&q创建的两个图。

现在,我发现在ipython中动态编码时,有一些东西非常有趣

In [73]: plt.plot(x , y)
#normal plotting function.
In [78]: plt.show()
#shows a graph as intended.
In [79]: plt.show()
#shows nothing.
现在,无论我调用多少次
plt.show()
(在我调用一次之后),它都不会显示图形为什么会这样?

PS:据我所知,在这个过程中可能会创建和删除一个对象。但我既不确定也不确信


提前感谢。

Pyplot使用或是所谓的“状态机”。它存储许多图形以及对当前轴和图形的引用。调用
show
后,将显示所有图形,并且
show
返回后,这些图形将从状态机中删除

在随后调用
show
时,不再显示任何图形,因此不会显示输出

因此,有一些(可能是不成文的或隐含的)假设,
show
在脚本中只调用一次


可能值得注意的是,尽管数字从状态机中删除,但它们在关闭之前仍保留在内存中。因此,根据所需的工作流程,在某些情况下可能会重复使用它们。

我怀疑这确实是一个重复。您可以将图形等保存到重新显示-一旦
show()
完成它的显示@是的,我在发布问题之前偶然发现了超链接的问题。我想知道这是怎么发生的(如果可能的话是为什么)。我知道一旦调用了
show()
,就完成了。问题是它是如何完成的。根据链接主题的一段引文,它被显式编码,目的是作为脚本中的最后一行被调用一次。那么这种状态机行为是通过创建和删除对象来控制的,还是这(状态机)完全不同的概念?内部有确保创建的对象。如前所述,它们不是被删除,而是从某种集合中删除。好的。我将阅读更多关于这种状态机类型的工作。谢谢。