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

7
请看下面这段简单的代码:

考虑以下简单的代码:

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在关闭图形窗口后保存图形。当然,这并不是很有用,但在原始代码中,我想以图形方式操作图形,然后保存更改。

上面的代码在我上一个Python版本(Debian的2.?版本)中运行良好,但自从我改用Python 3.4的SuSe 13.2以来,它就会连续运行整个代码。

有关此主题的其他线程确实存在,如Matplotlib python show()立即返回,但这些解决方案对我无效 - 我尝试了matplotlib.interactive(False)和选择不同的matplotlib后端(当前我正在使用'QT4Agg')。


当您在plt.figure之前调用plt.ioff()会发生什么?原则上,您应该在创建图形之前调用它,也许Python 3.4的matplotlib更加严格。 - oschoudhury
不幸的是,这也没有帮助。我甚至在头部放置了matplotlib.interactive(False),但没有任何效果。 - phlegmax
你是否在 IPython 会话中运行此代码?你应该在你的问题中提及这一点。 - ali_m
1个回答

6
请使用Agg后端。它是非交互式的,并且可以解决此问题。要设置matplotlib后端,请按照下面所示调用use方法。
import matplotlib
matplotlib.use('Agg')

4
可能已经不再是最新的了:“UserWarning: Matplotlib当前正在使用agg,这是一个非GUI后端,因此无法显示图形。” - oarfish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接