Hi I like MPL very much since I'm used to MATLAB and it's
> fantastic plotting features but I have 3 little issues
> (most likely newbie stuff to solve.
> 1.) To change the backend interactively the MPL homepage
> suggests something like
> import matplotlib from pylab import *
> matplotlib.use(<backend-name-string>) plot(...); show()
First, you need to assess whether you really need to change the
backend interactively. Eg, if you are using tkagg and call
savefig('myfile.eps') # uses ps
savefig('myfile.svg) # uses svg
Ie, matplotlib will do the backend switching for you in the most
common use cases.
Now if you really do need to change the default backend interactively,
use the experimental pylab function switch_backend
> But I found that whatever backend I tell MPL to use, it
> always uses the one defined in my .matplotlibrc.
matplotlib.use must be called before the pylab import, and will have
no effect after the import.
> 2.) When I start my Python shell (IPython, WinXP) and use
> MPL the 1st time in the session
> from pylab import * plot(...); show()
> the plot window appears but I'm not able to type anything
> in the shell. I close the plot window and
> plot(...); show()
> again. From now on I'm able to type in the shell. What's
You need to start ipython with -pylab option, and then 1) you do not
need to import pylab and 2) you do not need to call show. ipytohn
will read your rc file and do the right thing. See
and the ipython manual.
> 3.) I tried to plot a data set with 1024 points (shape(x)
> = shape(y) = (1024,)).
> which takes about 4 seconds to build up the plot (at least
> with the TkAgg backend). This is far to slow for me. What
> can I do?
Are you running on a 486? Are you properly measuring the plot
times versus startup times for python, etc? Maybe the fact that you
are mixing up interactive and non-interactive commands above is
causing you some problems? On my system, to plot 1024 circles takes
0.07 seconds for gtkagg and 0.18 seconds for tkagg. This time
includes creating the new x and y arrays on each iteration as well as
Here is the script I measured these times with , which I ran from
ipython using 'run myscript.py'
start = time.time()
fig = pylab.figure()
N = 20
for i in range(20):
ax = fig.add_subplot(111)
x = pylab.rand(1024)
y = pylab.rand(1024)
ax.plot(x, y, 'o')
print (time.time() - start)/N
I'm running on a 3GHz Pentium 4 under linux.