如何将Python 3.4 matplotlib置于非交互模式?

如何将Python 3.4 matplotlib置于非交互模式?,python,matplotlib,Python,Matplotlib,考虑以下简单代码: import numpy as np import matplotlib.pyplot as plt x = np.arange(0,np.pi,0.001) f = np.sin(x) plt.figure(figsize=(10,10)) plt.plot(x,f) plt.ioff() plt.show() plt.savefig('Sine') 在这里,我希望Python在关闭figure窗口后保存该图。当然,这不是很有用,但在原始代码中,我希望以图形方式操作图

考虑以下简单代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,np.pi,0.001)
f = np.sin(x)

plt.figure(figsize=(10,10))
plt.plot(x,f)
plt.ioff()
plt.show()
plt.savefig('Sine')
在这里,我希望Python在关闭figure窗口后保存该图。当然,这不是很有用,但在原始代码中,我希望以图形方式操作图形,然后保存更改

上面的代码在我的上一个Python版本(使用Debian的版本2)中运行得很好,但是由于我使用Python3.4更改为SuSe 13.2,它只是不停地运行整个代码


在这个主题上确实存在其他线程,例如,但这些解决方案对我不起作用-我尝试了
matplotlib.interactive(False)
并为matplotlib选择了各种不同的后端(目前我正在使用
'QT4Agg'
)。

请使用
Agg
后端。它是非交互式的,它解决了这个问题。要设置matplotlib后端,需要调用
使用
方法,如下所示

import matplotlib
matplotlib.use('Agg')

plt.figure
之前移动
plt.ioff()
会发生什么?原则上,您应该在创建图形之前调用它,也许Python 3.4的matplotlib在这方面更严格。不幸的是,这也没有帮助。我甚至在标题中添加了matplotlib.interactive(False),但没有任何效果。您是否在IPython会话中运行此代码?你应该在问题中提到这一点。