Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c3b87ff

Browse files
committed
applied patch 1222180
svn path=/trunk/matplotlib/; revision=1478
1 parent 907af73 commit c3b87ff

15 files changed

Lines changed: 278 additions & 72 deletions

CHANGELOG

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
New entries should be added at the top
22

3+
2005-06-16 Applied David Cooke's subplot make_key patch
4+
========================================================
5+
2005-06-15 0.82 released
6+
37
2005-06-15 Added subplot config tool to GTK* backends -- note you must
48
now import the NavigationToolbar2 from your backend of
59
choice rather than from backend_gtk because it needs to

lib/matplotlib/axes.py

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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()]

lib/matplotlib/backend_bases.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,6 @@ class RendererBase:
1616
"""An abstract base class to handle drawing/rendering operations
1717
"""
1818

19-
def cache(self):
20-
"""
21-
save a copy of the canvas, to be used in conjunction with blit
22-
in support of animation
23-
"""
24-
pass
25-
26-
def blit(self):
27-
"""
28-
blit the cached copy of the canvas, to be used in conjunction
29-
with blit in support of animation
30-
"""
31-
pass
32-
3319

3420
def open_group(self, s):
3521
"""open a grouping element with label s
@@ -713,6 +699,12 @@ def __init__(self, figure):
713699

714700

715701

702+
def blit(self, bbox=None):
703+
"""
704+
blit the canvas in bbox (default entire canvas)
705+
"""
706+
pass
707+
716708
def key_press_event(self, key, guiEvent=None):
717709
self._key = key
718710
event = KeyEvent('key_press_event', self, key, self._lastx, self._lasty, guiEvent=guiEvent)

lib/matplotlib/backends/backend_agg.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ def __init__(self, width, height, dpi):
120120
self.draw_line_collection = self._renderer.draw_line_collection
121121
self.draw_poly_collection = self._renderer.draw_poly_collection
122122
self.draw_regpoly_collection = self._renderer.draw_regpoly_collection
123+
124+
self.copy_from_bbox = self._renderer.copy_from_bbox
125+
self.restore_region = self._renderer.restore_region
126+
127+
123128
self.cache = self._renderer.cache
124129
self.blit = self._renderer.blit
125130
self.texmanager = TexManager()
@@ -359,6 +364,14 @@ class FigureCanvasAgg(FigureCanvasBase):
359364
figure - A Figure instance
360365
"""
361366

367+
def copy_from_bbox(self, bbox):
368+
renderer = self.get_renderer()
369+
return renderer.copy_from_bbox(bbox)
370+
371+
def restore_region(self, region):
372+
renderer = self.get_renderer()
373+
return renderer.restore_region(region)
374+
362375
def draw(self):
363376
"""
364377
Draw the figure using the renderer

lib/matplotlib/backends/backend_gtkagg.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,10 @@ def _render_figure(self, width, height):
8989
self._pixmap_height)
9090

9191
FigureCanvasAgg.draw(self)
92-
agg_to_gtk_drawable(self._pixmap, self.renderer._renderer)
92+
agg_to_gtk_drawable(self._pixmap, self.renderer._renderer, None)
9393

94-
def blit(self):
95-
agg_to_gtk_drawable(self._pixmap, self.renderer._renderer)
94+
def blit(self, bbox=None):
95+
agg_to_gtk_drawable(self._pixmap, self.renderer._renderer, bbox)
9696
self.window.set_back_pixmap (self._pixmap, False)
9797
self.window.clear() # draw pixmap as the gdk.Window's bg
9898
self._draw_pixmap = False

lib/matplotlib/figure.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ def __init__(self,
150150

151151
self.clf()
152152

153+
self._cachedRenderer = None
154+
153155
def set_canvas(self, canvas):
154156
"""\
155157
Set the canvas the contains the figure
@@ -336,16 +338,20 @@ def fixitems(items):
336338
# to tuples for the kyey
337339
ret = []
338340
for k, v in items:
339-
if iterable(v): v = tuple(v)
341+
if iterable(v): v = tuple(v)
340342
ret.append((k,v))
341-
return ret
343+
return tuple(ret)
344+
345+
def fixlist(args):
346+
ret = []
347+
for a in args:
348+
if iterable(a): a = tuple(a)
349+
ret.append(a)
350+
return tuple(ret)
342351

343-
if iterable(args[0]):
344-
key = tuple(args[0]), tuple( fixitems(kwargs.items()))
345-
else:
346-
key = args[0], tuple(fixitems( kwargs.items()))
352+
key = fixlist(args), fixitems(kwargs.items())
347353
return key
348-
354+
349355
def add_axes(self, *args, **kwargs):
350356
"""
351357
Add an a axes with axes rect [left, bottom, width, height] where all
@@ -506,6 +512,13 @@ def draw(self, renderer):
506512
self.transFigure.thaw() # release the lazy objects
507513
renderer.close_group('figure')
508514

515+
self._cachedRenderer = renderer
516+
517+
def draw_artist(self, a):
518+
'draw artist only -- this is available only after the figure is drawn'
519+
assert self._cachedRenderer is not None
520+
a.draw(self._cachedRenderer)
521+
509522
def get_axes(self):
510523
return self.axes
511524

lib/matplotlib/image.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,6 @@ def make_image(self, flipy):
189189
return im
190190

191191
def draw(self, renderer, *args, **kwargs):
192-
193192
if not self.get_visible(): return
194193
isUpper = self.origin=='upper'
195194
flipy = renderer.flipy()

lib/matplotlib/pylab.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,8 @@ def figure(num=None, # autoincrement if None, else integer from 1-N
803803
figManager = new_figure_manager(num, figsize, dpi, facecolor, edgecolor, frameon)
804804
_pylab_helpers.Gcf.set_active(figManager)
805805
figManager.canvas.figure.number = num
806-
806+
807+
draw_if_interactive()
807808
return figManager.canvas.figure
808809

809810
def gca(**kwargs):

lib/matplotlib/text.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,10 @@ def set_bbox(self, rectprops):
276276
self._bbox = rectprops
277277

278278
def draw(self, renderer):
279-
if not self.get_visible(): return
280-
if self._text=='': return
281279
if renderer is not None:
282280
self._renderer = renderer
281+
if not self.get_visible(): return
282+
if self._text=='': return
283283

284284
gc = renderer.new_gc()
285285
gc.set_foreground(self._color)

lib/matplotlib/widgets.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,13 +135,15 @@ def __init__(self, ax, label, valmin, valmax, valinit=0.5, valfmt='%1.2f',
135135
"""
136136
Create a slider from valmin to valmax in axes ax;
137137
138-
label is the slider label valinit is the slider initial position
138+
valinit - the slider initial position
139139
140-
valfmt is used to format the slider value
140+
label - the slider label
141141
142-
closedmin and closedmax indicated whether the slider interval is closed
142+
valfmt - used to format the slider value
143143
144-
slidermin and slidermax can be used to contrain the value of
144+
closedmin and closedmax - indicate whether the slider interval is closed
145+
146+
slidermin and slidermax - be used to contrain the value of
145147
this slider to the values of other sliders.
146148
"""
147149
self.ax = ax

0 commit comments

Comments
 (0)