[Matplotlib-users] Basic matshow question

2014-07-29 Thread JBB
Hello,

I am relatively new to Python, numpy, matplotlib, etc., with a 
reasonable amount of Matlab experience.

I am trying to do some simple array visualizations before moving on to 
specific work.

e.g. I have a 5x5x10 array and I'd like to see each 5x5 piece as a 
"frame" with a short pause in between.  I realize there are animation 
methods and such but I think the  code below ought to work and don't 
understand what I'm getting.

Expect: A figure window with the first 5x5 piece of the array, a short 
pause, a new figure window overwriting the old one with the second 5x5 
piece, and so on. Equivalent code in Matlab does this.

Result:  Figure window opens, nothing gets drawn in it, there's a pause, 
the window closes, and another window opens in the same location with 
nothing in it, and so on.

If I refresh the kernel, create the 3D array, and manually show one 
slice, it works.  As soon as I run the loop, all I get from then on is 
blank windows whether I do it within a loop or type the matshow, show 
commands.

This happens in iPython with and without the notebook interface.

I'm trying to understand Matplotlib in some detail and am watching the 
SciPy2014 videos along with RTFM.
https://www.youtube.com/watch?v=A2adyFMsut0 et.seq.

So far, I've come up empty in figuring out what I'm doing wrong.

I have Python 2.7.8/Anaconda 2.0.1

Thanks,

JBB
= Test code

import numpy as np
from matplotlib.pylab import *
import time as time

# Create a 3D array of "frames"
A = np.random.rand(5,5,10)

#Turn on interactive mode
ion()
# Turn off interactive mode
# ioff()

# Attempt to show each frame with a short delay between frames
for k in range(10):
 matshow(A[:,:,k])
 show()
 time.sleep(1)
 close()


--
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Basic matshow question

2014-07-29 Thread JBB
On 7/29/14, 10:49 PM, Eric Firing wrote:
 > On 2014/07/29, 7:04 PM, JBB wrote:
 >> Hello,
 >>
 >> I am relatively new to Python, numpy, matplotlib, etc., with a
 >> reasonable amount of Matlab experience.

...[ Problem and test code trimmed ]

 >
 > First, at least initially for this sort of thing, run in "ipython
 > --pylab", and don't use any "ion()" or "ioff()".
 >
 > Second, replace the "show(); time.sleep(1)" with "pause(1)".
 >
 > I think that will do it.
 >
 > Eric
 >

Thank you, very much.  It did indeed work.

Is there a pointer to why this worked when my initial approach did not? 
  I thought from the documentation/videos that preparing a plot with 
relevant commands then issuing the show() command was the preferred 
approach within Python/Matplotlib.

JBB




--
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Basic matshow question

2014-07-30 Thread JBB
Thanks for all the responses.  I'll try pure Python via the Spyder IDE 
vs. Ipython/Ipython Notebook for this and report back.  The 'No Pylab 
Thanks' was enlightening.

I am confused about the role of the Notebook interface.  I've been using 
it to learn the language, do experiments, and preserve tips/tricks I 
pick up along the way.  I've also seen it used in many online 
presentations and courses on Python, numpy, matplotlib, and other 
packages. I've found it very helpful so far and would like to stick with it.

But, it sounds like it there are some hidden issues in how the notebook 
i/f interacts with matplotlib?  Is it not the best choice for learning 
plotting?  If not, what's recommended - IDE?  Python from a terminal 
window? ... ?

JBB


--
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Re: [Matplotlib-users] Basic matshow question

2014-07-30 Thread JBB
I've followed up on several suggestions and here is what I've done/found.

(I know I don't use mlab or pylab but I pulled the import lines from 
another source and am leaving them in for the heck of it)

Code A:
import numpy as np
import matplotlib
import time
from matplotlib import pylab, mlab, pyplot

A = np.random.rand(5,5,10)
for j in range(10):
 pyplot.matshow(A[:,:,j])
 # pyplot.pause(.5)
 pyplot.show()
 time.sleep(0.5)
 pyplot.close()

Code B:
import numpy as np
import matplotlib
import time
from matplotlib import pylab, mlab, pyplot

A = np.random.rand(5,5,10)
for j in range(10):
 pyplot.matshow(A[:,:,j])
 pyplot.pause(.5)
 # pyplot.show()
 # time.sleep(0.5)
 pyplot.close()


1)
Code A:
Spyder Python (Mac) - A blank figure window is generated, closed, and 
repeated over ten iterations.  No user intervention needed to allow loop 
to continue.

Adding a pyplot.ioff() line after the from matplotlib line gives the 
expected/hoped behavior:  Ten arrays appear, one after the other, no 
intervention needed.

---

Ipython Notebook (no --pylab) - A figure window with an array appears. 
I have to close it using the Window Close titlebar button, then the next 
one appears, waits for close action, etc.

Adding a pyplot.ion() statement after the from matplotlib line yields 
the same result as Spyder Python w/o the pyplot.ioff() line. 10 blank 
windows appear one after the other.


Code B:
Spyder Python and Ipython Notebook (no --pylab) - Both display 
expected/hoped behavior.  Figure window appears, figure displays, 
closes, and then opens with next piece of data

So, there's something about the pause command that's special, at least 
in this case, and I'd like to understand what that is.

2) Additional interactive test following code runs:

pyplot.matshow(A[:,:,6)]

Spyder Python - Figure pops up, plot is displayed.  Zoom, pan, 
back/forth, home buttons all work

Ipython notebook (no --pylab) - Figure pops up, no plot displays.
Adding pause(x) causes figure to display.  Plot is interactive for x 
seconds.  Zoom, pan, etc. work for that time.  Notebook shows In[*] for 
x seconds.

After x seconds, In[*] <-- In[Cell number].  Plot is no longer 
interactive, mousing over plot shows spinning Mac rainbow ball.  Can't 
even close window using titlebar icons.  pyplot.close() from a cell 
required to close.

I would like to stay with the Notebook as I learn matplotlib but I'm not 
sure how to get around the plot being interactive for only a defined 
time period, spinning rainbow balls, etc.

JBB



On 7/30/14, 9:30 AM, Benjamin Root wrote:
> I think it is mostly an issue with how IPython interfaces with
> matplotlib. If you were running from a pure python prompt, then I would
> suspect it to work (haven't tried myself, though). Note that the --pylab
> option to ipython is now highly discouraged. Instead, I would try the
> "%matplotlib interactive" cell magic instead (I think that is the right
> incantation).
>
>
> On Wed, Jul 30, 2014 at 2:15 AM, JBB
>  <mailto:jeanbigbo...@gmail.com>> wrote:
>
> On 7/29/14, 10:49 PM, Eric Firing wrote:
>   > On 2014/07/29, 7:04 PM, JBB wrote:
>   >> Hello,
>   >>
>   >> I am relatively new to Python, numpy, matplotlib, etc., with a
>   >> reasonable amount of Matlab experience.
>
> ...[ Problem and test code trimmed ]
>
>   >
>   > First, at least initially for this sort of thing, run in "ipython
>   > --pylab", and don't use any "ion()" or "ioff()".
>   >
>   > Second, replace the "show(); time.sleep(1)" with "pause(1)".
>   >
>   > I think that will do it.
>   >
>   > Eric
>   >
>
> Thank you, very much.  It did indeed work.
>
> Is there a pointer to why this worked when my initial approach did not?
>I thought from the documentation/videos that preparing a plot with
> relevant commands then issuing the show() command was the preferred
> approach within Python/Matplotlib.
>
> JBB
>
>
>
>
> 
> --
> Infragistics Professional
> Build stunning WinForms apps today!
> Reboot your WinForms applications with our WinForms controls.
> Build a bridge from your legacy apps to the future.
> 
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
> ___
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> <mailto:Matplotlib-users@lists.sourceforge.net>
> https://lists.sourceforge.net/lists

Re: [Matplotlib-users] Basic matshow question

2014-08-10 Thread JBB
Exec. summary - I was having strange behavior with matshow in a loop and 
also with discrepancies between how iPython Notebook and Python via IDE 
displayed plots.

Solutions:
1) Using pause instead of show fixed matshow in a loop

2) Explicitly invoking %matplotblib qt or generally %matplotlib 
{backend} before  importing or using  matplotlib fixed various problems 
with plots in notebooks.  Now when I create a plot in a notebook, it 
appears, I can work with it, close it when appropriate, and 
simultaneously be able to do other work in notebook cells.

Thanks to everyone for the rapid responses.

JBB

On 7/30/14, 10:04 PM, JBB wrote:
> I've followed up on several suggestions and here is what I've done/found.
>
> (I know I don't use mlab or pylab but I pulled the import lines from
> another source and am leaving them in for the heck of it)


[ Woe/intrigue trimmed ]


>>  Is there a pointer to why this worked when my initial approach did not?
>> I thought from the documentation/videos that preparing a plot with
>>  relevant commands then issuing the show() command was the preferred
>>      approach within Python/Matplotlib.
>>
>>  JBB
>>



--
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users