【问题标题】:Close a figure - PyCharm关闭图 - PyCharm
【发布时间】:2017-03-17 18:35:36
【问题描述】:

我花了一个多小时搜索,只是为了弄清楚这个简单的事情。因此,在考虑这是一个重复的问题之前,请将我的问题与那里的任何问题进行比较。

这是我的代码:

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 中,可以很容易地在文件的开头说 close all 并关闭所有打开的绘图,这些绘图是先前 MATLAB 代码执行的结果。 plt.close('all') 也不起作用。

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

【问题讨论】:

标签: python matplotlib pycharm


【解决方案1】:

plt.show(block=False) 可以解决问题 - 这是您可以使此函数非阻塞(在运行和调试模式下)的方式。主要缺点是如果代码结束,图形会自动关闭...

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 我修复了它,使 Pycharm 中的 python 文件只在一个控制台中运行。转到:运行---编辑配置-检查“仅单个实例”是否已激活

    【讨论】:

      【解决方案3】:

      matplotlib 有两种运行方式,非交互​​式和交互式。在非交互模式下,默认情况下,plt.show() 是阻塞的。在这种情况下,调用plt.close() 是没有意义的,只要图是打开的,代码就不会停止。然而,在交互模式下(可以由plt.ion() 触发),此代码将打开然后立即关闭图窗。如果你在脚本中运行这样的代码,你需要放置一些东西来等待用户输入。交互模式,顾名思义,是为交互运行而不是在脚本中运行而设计的。

      对于多次运行 python 脚本来关闭图形,这是不可能的。如果您打开多个 MATLAB 实例,close all 在一个实例中不会关闭另一个实例中的图形。运行同一python代码的多个进程与打开多个MATLAB实例相同,一次运行不知道其他运行。

      【讨论】:

      • 可能是我用错了词处理。在 MATLAB 中,如果您在代码顶部有一个 close all 行。运行代码 - 打开一个图。再次运行代码,打开的图形被关闭。我有没有办法在 Python 中做到这一点?我不会在这里打开多个 MATLAB 实例。相同的实例运行相同的代码两次。
      • @JeshKundem 是的,但是如果您多次运行 python 脚本,您将打开多个 python 实例。所以我的观点是多次运行 python 脚本等同于在单独的 MATLAB 实例中运行 MATLAB 脚本。如果你想在同一个 python 实例中多次运行相同的代码,你应该使用一个函数,而不是一个脚本,你应该从 python shell 运行它。或者更好的是使用 ipython/jupyter notebook 之类的东西来保持所有代码和图形井井有条。
      猜你喜欢
      • 1970-01-01
      • 2013-02-14
      • 2021-03-02
      • 2011-11-13
      • 2022-08-24
      • 2011-02-03
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多