@@ -353,8 +353,7 @@ def __init__(self, fig, rect,
353353 # a mapping from artists to 1 -- would use a set but we are
354354 # python2.2 compliant
355355 self .animated = {}
356- self ._lastRenderer = None
357-
356+ self ._cachedRenderer = None
358357 self .set_navigate (True )
359358 if len (kwargs ): setp (self , ** kwargs )
360359
@@ -1324,7 +1323,25 @@ def csd(self, x, y, NFFT=256, Fs=2, detrend=detrend_none,
13241323
13251324 return pxy , freqs
13261325
1327- def draw (self , renderer ):
1326+ def draw_artist (self , a ):
1327+ """
1328+ This method can only be used after an initial draw which
1329+ caches the renderer. It is used to efficiently update Axes
1330+ data (axis ticks, labels, etc are not updated)
1331+ """
1332+ assert self ._cachedRenderer is not None
1333+ a .draw (self ._cachedRenderer )
1334+
1335+ def redraw_in_frame (self ):
1336+ """
1337+ This method can only be used after an initial draw which
1338+ caches the renderer. It is used to efficiently update Axes
1339+ data (axis ticks, labels, etc are not updated)
1340+ """
1341+ assert self ._cachedRenderer is not None
1342+ self .draw (self ._cachedRenderer , inframe = True )
1343+
1344+ def draw (self , renderer , inframe = False ):
13281345 "Draw everything (plot lines, axes, labels)"
13291346 if not self .get_visible (): return
13301347 renderer .open_group ('axes' )
@@ -1357,7 +1374,7 @@ def draw(self, renderer):
13571374 oy = self .figure .bbox .height ()- (b + h )
13581375 renderer .draw_image (ox , oy , im , origin , self .bbox )
13591376
1360- if self .axison :
1377+ if self .axison and not inframe :
13611378 self .xaxis .draw (renderer )
13621379 self .yaxis .draw (renderer )
13631380
@@ -1395,11 +1412,10 @@ def draw(self, renderer):
13951412 self .transAxes .thaw () # release the lazy objects
13961413 renderer .close_group ('axes' )
13971414
1398- if len (self .animated ):
1399- self ._lastRenderer = renderer
1400- renderer .cache ()
1415+ self ._cachedRenderer = renderer
14011416
1402- def draw_animate (self ):
1417+ def __draw_animate (self ):
1418+ # ignore for now; broken
14031419 if self ._lastRenderer is None :
14041420 raise RuntimeError ('You must first call ax.draw()' )
14051421 dsu = [(a .zorder , a ) for a in self .animated .keys ()]
0 commit comments