extreme navigation slowness for subplots

Hello,

I’m using version 1.0.1 of matplotlib on a linux machine. uname -a returns the following: Linux jgulinux 2.6.35.14-95.fc14.x86_64 #1 SMP Tue Aug 16 21:01:58 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux.

[jgu@…3825… ~/.matplotlib]$ cat matplotlibrc

backend : TkAgg

interactive : True

Program that reproduces the problem (run in ipython):

x = arange(1000)

y = x

f = figure(1)

for ia in xrange(5):

for ib in xrange(5):

ax = subplot(5,5,ia*5+ib+1, navigate=True)

ax.plot(x,y)

If we now tried to interactively navigate through any single subplot of the figure, it is extremely slow. Not sure if this is a configuration error on my side?

John

Hello,

I'm using version 1.0.1 of matplotlib on a linux machine. uname -a
returns the following: Linux jgulinux 2.6.35.14-95.fc14.x86_64 #1 SMP
Tue Aug 16 21:01:58 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux.

[jgu@...3825... ~/.matplotlib]$ cat matplotlibrc
backend : TkAgg
interactive : True

Program that reproduces the problem (run in ipython):

x = arange(1000)
y = x

f = figure(1)
for ia in xrange(5):
     for ib in xrange(5):
         ax = subplot(5,5,ia*5+ib+1, navigate=True)
         ax.plot(x,y)

If we now tried to interactively navigate through any single subplot of
the figure, it is extremely slow. Not sure if this is a configuration
error on my side?

No, and it is not backend-dependent, either. And it does not even require that all of the plots have data--it is the same if only the last subplot has data. A little experimentation indicates that all the ticks and tick labels on the other subplots are slowing down the interaction with the one subplot being navigated.

         ax.tick_params(labelbottom=False, labelleft=False)
         ax.tick_params(left=False, right=False, top=False, bottom=False)

Insert the above to turn off ticks and tick labels, and it speeds up nicely. That's not a solution, I realize.

I knew that slowness in the tick and tick label generation was a major bottleneck in subplot creation, but I did not realize that it had such an effect on interactive manipulation of a single subplot.

Eric

···

On 10/20/2011 03:47 PM, John Gu wrote:

John

Thanks. Is there a place where these sorts of issues can be submitted for review / fixes? I’m totally willing to take a look at possible solutions if someone points me in the right direction. Thanks.

···

On Thu, Oct 20, 2011 at 10:52 PM, Eric Firing <efiring@…202…> wrote:

On 10/20/2011 03:47 PM, John Gu wrote:

Hello,

I’m using version 1.0.1 of matplotlib on a linux machine. uname -a

returns the following: Linux jgulinux 2.6.35.14-95.fc14.x86_64 #1 SMP

Tue Aug 16 21:01:58 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux.

[jgu@…3825… ~/.matplotlib]$ cat matplotlibrc

backend : TkAgg

interactive : True

Program that reproduces the problem (run in ipython):

x = arange(1000)

y = x

f = figure(1)

for ia in xrange(5):

 for ib in xrange(5):
     ax = subplot(5,5,ia*5+ib+1, navigate=True)
     ax.plot(x,y)

If we now tried to interactively navigate through any single subplot of

the figure, it is extremely slow. Not sure if this is a configuration

error on my side?

No, and it is not backend-dependent, either. And it does not even

require that all of the plots have data–it is the same if only the last

subplot has data. A little experimentation indicates that all the ticks

and tick labels on the other subplots are slowing down the interaction

with the one subplot being navigated.

     ax.tick_params(labelbottom=False, labelleft=False)

     ax.tick_params(left=False, right=False, top=False, bottom=False)

Insert the above to turn off ticks and tick labels, and it speeds up

nicely. That’s not a solution, I realize.

I knew that slowness in the tick and tick label generation was a major

bottleneck in subplot creation, but I did not realize that it had such

an effect on interactive manipulation of a single subplot.

Eric

John


The demand for IT networking professionals continues to grow, and the

demand for specialized networking skills is growing even more rapidly.

Take a complimentary Learning@…3826… Self-Assessment and learn

about Cisco certifications, training, and career opportunities.

http://p.sf.net/sfu/cisco-dev2dev


Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-users

John,

Development takes place via github, so you can submit issues, clone and make pull requests, etc.:

Eric

···

On 10/20/2011 05:17 PM, John Gu wrote:

Thanks. Is there a place where these sorts of issues can be submitted
for review / fixes? I'm totally willing to take a look at possible
solutions if someone points me in the right direction. Thanks.

I have a simple fix for this on this branch:

[https://github.com/mdboom/matplotlib/tree/slow_update](https://github.com/mdboom/matplotlib/tree/slow_update)

It's sort of the simplest thing that could work.  It caches the last

results of “_update_ticks” and only updates them if the view limits
or axis position have changed. It also invalidates this cache upon
changing the set of ticks etc.

It makes things considerably faster -- it still has to draw all of

the elements of the plot every time. Fixing that would require a
lot more low-level replumbing (matplotlib doesn’t currently do
region-based updating etc.).

Mike
···

http://p.sf.net/sfu/cisco-dev2dev


Matplotlib-users@lists.sourceforge.nethttps://lists.sourceforge.net/lists/listinfo/matplotlib-users