I've found that, for big images, the *first* draw is very slow, due to the
intensity scaling of the image, which happens at full resolution. Panning
and zooming afterwards is fast because the intensity scaling is cached, but
changing the data array or updating the norm kwarg is slow again. I made
ModestImage (https://github.com/ChrisBeaumont/mpl-modest-image) to deal
with this -- it dynamically downsamples images to screen resolution. This
makes the first draw after updating the data or norm much faster, while
slowing down subsequent redraws. Perhaps this could help you out?

cheers,
chris

On Tue, Oct 14, 2014 at 12:08 PM, Benjamin Root <ben.r...@ou.edu> wrote:

> Only if there are multiple figures (plt.draw() operates on the current
> active figure, while fig.draw() explicitly operates upon that figure).
> Another possibility is that the bottleneck truly is the IO. Depending on
> exactly how fits work, it might be lazily loading data for you, so the test
> without the display of the images might not actually be loading any data
> into memory.
>
> Ben Root
>
> On Tue, Oct 14, 2014 at 11:22 AM, Slavin, Jonathan <
> jsla...@cfa.harvard.edu> wrote:
>
>> Hmm.  I just saw that you suggest fig.draw().  Is there a difference with
>> plt.draw()?
>>
>> Jon
>>
>> On Tue, Oct 14, 2014 at 11:20 AM, Slavin, Jonathan <
>> jsla...@cfa.harvard.edu> wrote:
>>
>>> Hi Ben,
>>>
>>> Sorry, in my little example, I left out a few things.  I do update first
>>> after the first call.  And I do call draw() after other calls.  So here is
>>> a more accurate representation of what I do:
>>>
>>> first = True
>>> fig = plt.figure()
>>> for file in files:
>>>     hdu = fits.open(file)
>>>     image = hdu[0].data
>>>     hdu.close()
>>>     if first:
>>>         ax = fig,add_subplot(1,1,1)
>>>         im = ax.imshow(image)
>>>         plt.show()
>>>         first = False
>>>     else:
>>>         im.set_data(image)
>>>         plt.draw()
>>>     ans = raw_input('continue?')
>>>     if ans == 'n':
>>>         break
>>>
>>> Jon
>>>
>>>
>>> On Tue, Oct 14, 2014 at 10:42 AM, Benjamin Root <ben.r...@ou.edu> wrote:
>>>
>>>> Also, you aren't updating "first" after the first call, so it is
>>>> constantly making new axes and recalling imshow().
>>>>
>>>> Ben Root
>>>>
>>>> On Tue, Oct 14, 2014 at 10:41 AM, Benjamin Root <ben.r...@ou.edu>
>>>> wrote:
>>>>
>>>>> What is happening is that you are not telling the image to redraw, so
>>>>> you are only seeing it refresh for other reasons. Try adding a fig.draw()
>>>>> call prior to the raw_input() call.
>>>>>
>>>>> Cheers!
>>>>> Ben Root
>>>>>
>>>>> On Tue, Oct 14, 2014 at 10:03 AM, Slavin, Jonathan <
>>>>> jsla...@cfa.harvard.edu> wrote:
>>>>>
>>>>>> Hi all,
>>>>>>
>>>>>> In my work lately I have often wanted to browse through a series of
>>>>>> images.  This means displaying the image(s), looking at it/them and then
>>>>>> continuing.  I have coded this in a few different ways, but it is 
>>>>>> generally
>>>>>> pretty slow -- which is to say that the image display takes more than a
>>>>>> couple seconds (~4) after I tell it to continue to the next image.  I
>>>>>> tested the loop without image display and it was a factor of ~80 times
>>>>>> faster than it was with image display, so it's doesn't have anything to 
>>>>>> do
>>>>>> with reading the images from disk.  My latest approach is basically:
>>>>>> first = True
>>>>>> fig = plt.figure()
>>>>>> for file in imagefiles:
>>>>>>     # read in image data (fits files)
>>>>>>     if first:
>>>>>>         ax = fig.add_suplot(1,1,1)
>>>>>>         im = ax.imshow(image)
>>>>>>     else:
>>>>>>         im.set_data(image)
>>>>>>     ans = raw_input('continue?')
>>>>>>     if ans == 'n':
>>>>>>         break
>>>>>>
>>>>>> Is there a more efficient way to do this?
>>>>>>
>>>>>> Regards,
>>>>>> Jon
>>>>>>
>>>>>> --
>>>>>> ________________________________________________________
>>>>>> Jonathan D. Slavin                 Harvard-Smithsonian CfA
>>>>>> jsla...@cfa.harvard.edu       60 Garden Street, MS 83
>>>>>> phone: (617) 496-7981       Cambridge, MA 02138-1516
>>>>>> fax: (617) 496-7577            USA
>>>>>> ________________________________________________________
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Comprehensive Server Monitoring with Site24x7.
>>>>>> Monitor 10 servers for $9/Month.
>>>>>> Get alerted through email, SMS, voice calls or mobile push
>>>>>> notifications.
>>>>>> Take corrective actions from your mobile device.
>>>>>> http://p.sf.net/sfu/Zoho
>>>>>> _______________________________________________
>>>>>> Matplotlib-users mailing list
>>>>>> Matplotlib-users@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>> --
>>> ________________________________________________________
>>> Jonathan D. Slavin                 Harvard-Smithsonian CfA
>>> jsla...@cfa.harvard.edu       60 Garden Street, MS 83
>>> phone: (617) 496-7981       Cambridge, MA 02138-1516
>>> fax: (617) 496-7577            USA
>>> ________________________________________________________
>>>
>>>
>>
>>
>> --
>> ________________________________________________________
>> Jonathan D. Slavin                 Harvard-Smithsonian CfA
>> jsla...@cfa.harvard.edu       60 Garden Street, MS 83
>> phone: (617) 496-7981       Cambridge, MA 02138-1516
>> fax: (617) 496-7577            USA
>> ________________________________________________________
>>
>>
>
>
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.
> http://p.sf.net/sfu/Zoho
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>


-- 
*************************************
Chris Beaumont
Senior Software Engineer
Harvard Center for Astrophysics
60 Garden Street, MS 42
Cambridge, MA 02138
chrisbeaumont.org
*************************************
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://p.sf.net/sfu/Zoho
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to