Pycharm 中调试时的 Matplotlib:如何关闭交互模式?

问题描述 投票:0回答:2

首先,我正在使用 Pycharm 调试控制台,并且想在我的图表下添加标题。根据这个答案,这可以通过以下方式实现:

plt.plot([2,5,1,2]
fig = plt.figure()
fig.text(.5, .05, "text", ha="center")
plt.show()

但是,这首先向我显示了绘图,然后是一个空窗口(输入第二行后),之后什么也没有。

我发现这一定是因为 matplotlib 的交互模式,所以我在调试会话中使用

plt.ioff()
将其关闭,之后
plt.isinteractive()
返回
False
。但这仍然不会改变其行为并在
plt.plot(...)
命令之后立即显示绘图。

奇怪的是,当我将

plt.ioff()
放入脚本中时,它会被忽略并且
plt.isinteractive()
返回
True

import matplotlib.pyplot as plt

plt.ioff()
plt.plot([1,2,3,4,5])
print(plt.isinteractive())

我的系统信息:

  • PyCharm CE 2017.3.2
  • macOS 塞拉利昂 10.12.6
  • Anaconda 环境中的 Python 3.6.3

任何人都可以复制这个吗?是否有另一种方法可以从 Pycharm 调试控制台创建更复杂的图表?我不想每次想绘制更复杂的东西时都改变我的开发环境。

python macos matplotlib pycharm python-interactive
2个回答
6
投票

回答您的问题:使用不同的(非交互式)后端:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

您的代码可能无法正常工作,因为您在绘图后创建了图形实例。尝试:

fig = plt.figure()
plt.plot([2,5,1,2]
fig.text(.5, .05, "text", ha="center")
plt.show()

0
投票

有点晚了,但我通过添加这一行解决了这个问题

matplotlib.use('module://backend_interagg')
。其他后端选项似乎都不适合我。

© www.soinside.com 2019 - 2024. All rights reserved.