【发布时间】:2019-07-22 21:15:20
【问题描述】:
我遇到了来自 IPython 的一些新奇的行为。我只需要重新安装我的 miniconda,所以我现在有了新的 IPython 和 Matplotlib 版本。事实证明,IPython 会自动将 matplotlib 切换到交互模式(这会产生烦人的副作用,即在我的脚本中使我保存的数字变为空白,因为它们会在我关闭窗口后保存)。
这是一个例子:
Python 3.7.3 | packaged by conda-forge | (default, Jul 1 2019, 21:52:21)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.6.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import matplotlib as mpl
In [2]: import matplotlib.pyplot as plt
In [3]: mpl.is_interactive()
Out[3]: False
In [4]: plt.plot([1,2])
Out[4]: [<matplotlib.lines.Line2D at 0x7f0b0b048940>]
In [5]: mpl.is_interactive()
Out[5]: True
有没有办法阻止这种行为?
注意,我已经在常规 python 中测试了相同的代码,并且交互模式保持关闭。
【问题讨论】:
-
这是一个漫长的过程,但是检查你的 IPython
.*rc文件?它们可能没有被覆盖,因为(如果我没记错的话)它们位于您的主文件夹中的某个位置。 -
图形需要交互模式才能响应,同时能够继续使用 IPython 控制台并更新绘图。因此,也许您想详细了解您在交互模式开启时遇到的问题?!
-
我遇到了同样的问题。有趣的是,如果我在你的最后一行之后调用 plt.ioff() 然后再次调用 plt.figure() ,则交互不再打开。似乎是第一次调用 figure() 会打开交互模式的问题。
-
@ImportanceOfBeingErnest 当交互模式开启时,会弹出数字,绘制需要时间,当不想看到它们时很烦人,而是保存它们。
标签: python matplotlib ipython conda miniconda