如何将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会话中运行此代码?你应该在问题中提到这一点。