gui-mpl.py
54 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
Fernando Perez
|
r2213 | """Test the new %gui command. Run this in ipython as | ||
Brian Granger
|
r2214 | In [1]: %gui [backend] | ||
In [2]: %run switchgui [backend] | ||||
Fernando Perez
|
r2213 | |||
where the optional backend can be one of: qt4, gtk, tk, wx. | ||||
Brian Granger
|
r2217 | |||
Because of subtle difference in how Matplotlib handles the different GUI | ||||
toolkits (in things like draw and show), minor modifications to this script | ||||
have to be made for Tk to get it to work with the 0.99 and below releases | ||||
of Matplotlib. However, in the future, Matplotlib should be able to have | ||||
similar logic for all the toolkits, as they are all now using PyOS_InputHook. | ||||
Fernando Perez
|
r2213 | """ | ||
import sys | ||||
import time | ||||
from IPython.lib import inputhook | ||||
Brian Granger
|
r2214 | gui = inputhook.current_gui() | ||
if gui is None: | ||||
gui = 'qt4' | ||||
inputhook.enable_qt4(app=True) | ||||
Fernando Perez
|
r2213 | |||
Brian Granger
|
r2214 | backends = dict(wx='wxagg', qt4='qt4agg', gtk='gtkagg', tk='tkagg') | ||
Fernando Perez
|
r2213 | |||
import matplotlib | ||||
Brian Granger
|
r2214 | matplotlib.use(backends[gui]) | ||
matplotlib.interactive(True) | ||||
Fernando Perez
|
r2213 | |||
import matplotlib | ||||
from matplotlib import pyplot as plt, mlab, pylab | ||||
import numpy as np | ||||
from numpy import * | ||||
from matplotlib.pyplot import * | ||||
Brian Granger
|
r2214 | x = np.linspace(0,pi,500) | ||
Fernando Perez
|
r2213 | |||
print "A plot has been created" | ||||
line, = plot(x,sin(2*x)) | ||||
Brian Granger
|
r2217 | inputhook.spin() # This has to be removed for Tk | ||
Fernando Perez
|
r2213 | |||
Brian Granger
|
r2214 | print "Now, we will update the plot..." | ||
Fernando Perez
|
r2213 | |||
for i in range(1,51): | ||||
print i, | ||||
sys.stdout.flush() | ||||
Brian Granger
|
r2214 | line.set_data(x,sin(x*i)) | ||
Fernando Perez
|
r2213 | plt.title('i=%d' % i) | ||
plt.draw() | ||||
Brian Granger
|
r2217 | inputhook.spin() # This has to be removed for Tk | ||