some issues

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 :slight_smile: 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

http://matplotlib.sf.net/matplotlib.pylab.html#-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
    > up?

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

  http://matplotlib.sourceforge.net/interactive.html

and

  http://matplotlib.sourceforge.net/faq.html#SHOW

and the ipython manual.

    > 3.) I tried to plot a data set with 1024 points (shape(x)
    > = shape(y) = (1024,)).

    > plot(x,y)

    > 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? :slight_smile: 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
plotting them.

Here is the script I measured these times with , which I ran from
ipython using 'run myscript.py'

import pylab
import time

pylab.ion()
start = time.time()
fig = pylab.figure()
N = 20
for i in range(20):
    fig.clear()
    ax = fig.add_subplot(111)
    x = pylab.rand(1024)
    y = pylab.rand(1024)
    ax.plot(x, y, 'o')
    pylab.draw()

print (time.time() - start)/N
pylab.show()

I'm running on a 3GHz Pentium 4 under linux.

JDH

Quoting John Hunter <jdhunter@...8...>:

    > 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
    > up?

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

Just to clarify, if you are running a script via ipython's %run, you do need to
call show() at the end. That's precisely the conscious change John referred to
recently in another thread.

Best,

f