OK, thanks JJ, I just wanted to make sure I was not missing something. I guess 
I'll have to check how it goes once rebinned.
Cheers,
Auré




________________________________
De : Jae-Joon Lee <lee.j.j...@gmail.com>
À : Auré Gourrier <aurelien.gourr...@yahoo.fr>
Cc : matplotlib-users@lists.sourceforge.net
Envoyé le : Lundi, 7 Septembre 2009, 4h11mn 29s
Objet : Re: [Matplotlib-users] slow rendering of 2K images using  
Animation_blit_tk.py - bis

There are a few ways to improve the speed, which, I guess, will give
you factor of a few speed up.
If you need more than that, I guess matplotlib is not suitable for your purpose.

* try a simple interpolation method, eg.  imshow(arr, interpolation="nearest")
* reduce the image size. Unless you have a monitor this large, you
loose the image quality anyhow.

In my machine (linux, xeon 2.6 GHz), it takes about ~0.8 s to display
2k x 2k image. 0.3 s for 1k x 1k.

Regards,

-JJ



On Fri, Sep 4, 2009 at 5:18 AM, Auré Gourrier<aurelien.gourr...@yahoo.fr> wrote:
> Dear all,
>
> I recently cried for help (see below) but sadly didn't get any answer...
> This problem is really a bottleneck for me and if I must find a solution...
> Can anyone PLEAAAAAAAAASE point me in the right direction ?
>
> I recently bumped into a problem while trying to display imshow images
> (2048x2048 pix) in a GUI based on TkAgg (matplotib0.91.2, python 2..4.4,
> numpy1.0.4).. In brief, building the image with imshow is Ok, but the call to
> show() or draw() takes about 1.2 s on my system (XP, 2.8Ghz, 2Go ram). After
> reading a lot of posts and trying out a few things, I turned to the
> Animation_blit_tk.py example and modified it accordingly (code attached
> below). In the end, the display is still not much faster using this method
> (still in the order of 1.2 s as indicated by the result below).
> Could any one tel me whether I'm doing something wrong ?
>
> As far as I understand, at least in my Tk GUI, the limiting step using the
> ImageTk.FigureCanvasTkAgg is the call to draw() or draw_artist(). I read
> some comments from John regarding TkAgg being slow in some cases but
> couldn't find a definite answer.
>
> Any hint would be much appreciated....
>
> Cheers,
>
> Aure
>
>
> --------
> # For detailed comments on animation and the techniqes used here, see
> # the wiki entry http://www.scipy.org/Cookbook/Matplotlib/Animations
>
> import matplotlib
> matplotlib.use('TkAgg')
>
> import sys
> import pylab as p
> #import matplotlib.numerix as nx
> import time
>
> from FileUtils10 import fileHandling
>
> # for profiling
> tstart = time.time()
> tprevious = time.time()
>
> fnamelist = ['fname1','fname2','fname3']
>
> ax = p.subplot(111)
> canvas = ax.figure.canvas
>
> print 't1 ',time.time()-tprevious
> tprevious = time.time()
>
> # create the initial line
> dataarr = fileHandling(fnamelist[0]).readSpecial()
> #print dataarr.dtype        =>  numpy dtype uint16
> #dataarr = dataarr..astype('uint8')
> print 't2 ',time.time()-tprevious
> tprevious = time.time()
>
> image = p.imshow(dataarr, animated=True)
> print 't3 ',time.time()-tprevious
> tprevious = time.time()
>
> def run(*args):
>     tprevious = time.time()
>     background = canvas.copy_from_bbox(ax.bbox)
>     print 't4 ',time.time()-tprevious
>     tprevious = time.time()
>     while 1:
>         #print fnamelist[run.cnt]
>         # restore the clean slate background
>         canvas.restore_region(background)
>         print 't5 ',time.time()-tprevious
>         tprevious = time.time()
>         # update the data
>         dataarr = fileHandling(fnamelist[run.cnt]).readSpecial()
>         print 't6 ',time.time()-tprevious
>         tprevious = time.time()
>         image.set_data(dataarr)
>         print 't7 ',time.time()-tprevious
>         tprevious = time.time()
>         # just draw the animated artist
>         ax.draw_artist(image)
>         print 't8 ',time.time()-tprevious
>         tprevious = time.time()
>         # just redraw the axes rectangle
>         canvas.blit(ax.bbox)
>         print 't9 ',time.time()-tprevious
>         tprevious = time.time()
>
>         if fnamelist[run.cnt] == fnamelist[-1]:
>             # print the timing info and quit
>             print 'total time:' , time.time()-tstart
>             print 'FPS:' , 1000./(time.time()-tstart)
>             p.close('all')
>             sys.exit()
>
>         run.cnt += 1
> run.cnt = 0
>
>
> p.subplots_adjust(left=0.3, bottom=0.3) # check for flipy bugs
> p.grid() # to ensure proper background restore
> manager = p.get_current_fig_manager()
> manager.window.after(100, run)
>
> p.show()
>
>
> ====
> Results in:
>
> t1  0.858999967575
> t2  0.0320000648499
> t3  1.31299996376
> t4  0.0
> t5  0.0
> t6  0.0310001373291
> t7  0.0
> t8  1.18700003624
> t9  0.0160000324249
> t5  0.0
> t6  0.0469999313354
> t7  0..0
> t8  1.17200016975
> t9  0.0149998664856
> t5  0.0
> t6  0.047000169754
> t7  0.0
> t8  1.21899986267
> t9  0.0
> t5  0.0
> t6  0.0460000038147
> t7  0.0
> t8  1.17199993134
> t9  0.0
> t5  0.0
> t6  0.0469999313354
> t7  0.0
> t8  1.18700003624
> t9  0.0160000324249
> total time: 8.75
> FPS: 114.285714286
>
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now.  http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>



      
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to