Re: [Matplotlib-users] Non-interactive plotting to window?

2011-12-16 Thread John Thorstensen


Here is a script that solves the problem, based on Goyo's input:

**

#!/usr/bin/env python
simple_matplot.py -- 
   Repeatedly plots sinusoids (shifted a bit each time).
 - control returns to the user after each plot;
 - the old plot is erased between cycles.


import numpy as np
import matplotlib
import matplotlib.pyplot as plt

x = np.arange(0.,2.*np.pi,0.02)
y = np.sin(x)

c = go

plt.ion()
fig = plt.figure()
ax = fig.add_subplot(1,1,1)

while c.find(go)  -1 :

   try:
   del ax.lines[0]
   except :
   pass
   line, =  ax.plot(x,y,'-')
   plt.draw()
   print stop or go?
   c = raw_input()
   x = x + 0.5

**


John Thorstensen wrote:
 
 I have a sizeable number of python data-inspection scripts that work as
 follows:
 
 - read some data, or do something with it
 - plot the data
 - query the user on the command line and get a response
 - do what the user commands.
 
 These use the venerable PGPLOT package for the graphics, but this has been
 static for years and is getting increasingly vulnerable to obsolescence of
 the supporting packages (e.g., numarray).
 
 I'm having a hard time converting these scripts to matplotlib because when
 you do a show(), the mainloop takes over.  It's possible to work around by
 doing a show() for every plot, and then killing the plot manually, but
 after a couple of hundred manual kills this gets tiresome.  It would also
 be possible to restructure the code so that the various options get
 controlled by key press events in the plot, I suppose, but the effort
 involved in converting all the scripts would be pretty large.
 
 So my question:  Is there a simple way of getting matplotlib to display a
 plot in a window and then surrender control to the main program, without
 destroying the plot?  Something like a method to kill mainloop would be
 ideal.  
 
 Thanks.
 
 [Apologies if this is general knowledge -- I couldn't find an answer.]
 

-- 
View this message in context: 
http://old.nabble.com/Non-interactive-plotting-to-window--tp32981792p32987821.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--
Learn Windows Azure Live!  Tuesday, Dec 13, 2011
Microsoft is holding a special Learn Windows Azure training event for 
developers. It will provide a great way to learn Windows Azure and what it 
provides. You can attend the event by watching it streamed LIVE online.  
Learn more at http://p.sf.net/sfu/ms-windowsazure
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] Non-interactive plotting to window?

2011-12-15 Thread John Thorstensen

I have a sizeable number of python data-inspection scripts that work as
follows:

- read some data, or do something with it
- plot the data
- query the user on the command line and get a response
- do what the user commands.

These use the venerable PGPLOT package for the graphics, but this has been
static for years and is getting increasingly vulnerable to obsolescence of
the supporting packages (e.g., numarray).

I'm having a hard time converting these scripts to matplotlib because when
you do a show(), the mainloop takes over.  It's possible to work around by
doing a show() for every plot, and then killing the plot manually, but after
a couple of hundred manual kills this gets tiresome.  It would also be
possible to restructure the code so that the various options get controlled
by key press events in the plot, I suppose, but the effort involved in
converting all the scripts would be pretty large.

So my question:  Is there a simple way of getting matplotlib to display a
plot in a window and then surrender control to the main program, without
destroying the plot?  Something like a method to kill mainloop would be
ideal.  

Thanks.

[Apologies if this is general knowledge -- I couldn't find an answer.]
-- 
View this message in context: 
http://old.nabble.com/Non-interactive-plotting-to-window--tp32981792p32981792.html
Sent from the matplotlib - users mailing list archive at Nabble.com.


--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Non-interactive plotting to window?

2011-12-15 Thread Goyo
2011/12/15 John Thorstensen john.thorsten...@dartmouth.edu:

 So my question:  Is there a simple way of getting matplotlib to display a
 plot in a window and then surrender control to the main program, without
 destroying the plot?  Something like a method to kill mainloop would be
 ideal.

Just make sure you use interactive mode and get rid of the show calls:

import matplotlib.pyplot as plt
plt.ion()  # set interactive mode
plt.plot(foo)  # plot something
bar()  # do stuff while the plot is visible
plt.close()  # if you want to close the plot window from the script

This works in mpl 1.1.0 al least with tkagg, gtkagg and qt4agg backends.

Goyo

--
10 Tips for Better Server Consolidation
Server virtualization is being driven by many needs.  
But none more important than the need to reduce IT complexity 
while improving strategic productivity.  Learn More! 
http://www.accelacomm.com/jaw/sdnl/114/51507609/
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users