phlegmax
phlegmax

Reputation: 419

How to put Python 3.4 matplotlib in non-interactive mode?

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

Answers (1)

Tejus Prasad
Tejus Prasad

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

Related Questions