Reputation: 419
Consider the following simple code:
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')
Here, I want Python to save the figure after I closed the figure window. Of course, this isn't very useful, but in the original code I want to manipulate the figure graphically and then save the changes.
The above code worked fine with my last Python version (Version 2.? with Debian), but since I changed to SuSe 13.2 with Python 3.4 it simply runs the whole code without a stop.
There do exist other threads on this topic like Matplotlib python show() returns immediately but those solutions don't work for me - I tried matplotlib.interactive(False)
and choosing various different backends for matplotlib (currently I'm using 'QT4Agg'
).
Upvotes: 7
Views: 8637
Reputation: 6500
Please use the Agg
backend. It is non interactive and it solves this issue. To set a matplotlib backend you need to call use
method as shown below.
import matplotlib
matplotlib.use('Agg')
Upvotes: 7