2016-11-04 470 views
3

我花了一个多小时的搜索,只是为了找到这个简单的东西。所以,在考虑这个重复的问题之前,请将我的问题与那里的任何问题进行比较。Python MatPlotlib - 关闭一个图 - PyCharm

这是我的代码:

import pandas 
import matplotlib.pyplot as plt 

dataset = pandas.read_csv('international-airline-passengers.csv', usecols=[1], engine='python', skipfooter=1) 
print dataset, type(dataset) 
plt.plot(dataset) 
plt.show() 
plt.close() 

首先,plt.show()我的理解是阻塞函数。那么结束这个数字的方法是什么?在它之后写plt.close()没有意义。那么把它放在哪里是正确的。

其次,我怎样才能确保所有窗口关闭,当我执行一个新的进程相同的Python代码。例如在MATLAB中,可以轻松地在文件的开始处关闭所有文件,并关闭之前MATLAB代码执行结果的所有打开的图。 plt.close('all')也无法正常工作。

我正在使用PyCharm。我发现第一种情况的结果可能适用于IDLE,但不适用于PyCharm。我该怎么做pyCharm。

回答

0

有两种方式可以运行matplotlib,非交互式和交互式。在非交互模式下,默认情况下,您正确的阻止了plt.show()。在这种情况下,调用plt.close()是毫无意义的,只要该图打开,代码就不会停止。然而,在交互模式下(可以触发plt.ion()),此代码将打开,然后立即关闭该数字。如果你在脚本中运行这样的代码,你需要放些东西来等待用户输入。正如其名称所暗示的,交互式模式的设计更多是为了交互式运行而不是脚本。

至于关闭python脚本多次运行的数字,这是不可能的。如果您打开多个MATLAB实例,则在一个实例中,close all将不会在另一个实例中关闭数字。运行相同python代码的多个进程与打开MATLAB的多个实例相同,一次运行没有其他的知识。

+0

可能是我错误地使用了这个词的过程。在MATLAB中,如果在代码顶部有一条紧密的所有行。运行代码 - 打开一个数字。再次运行代码,打开的数字被关闭。我有没有办法在Python中做到这一点?这里我不打开MATLAB的多个实例。同一个实例运行相同的代码两次。 –

+0

@JeshKundem对,但是如果你多次运行一个python脚本,你会打开多个python实例。所以我的观点是,多次运行python脚本就相当于在单独的MATLAB实例中运行MATLAB脚本。如果你想在同一个python实例中多次运行相同的代码,你应该使用一个函数,而不是脚本,你应该从python shell运行它。或者更好的办法是使用像ipython/jupyter笔记本这样的东西来保持所有的代码和数据的组织。 – TheBlackCat