Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdd9cfa4

Browse files
committed
Merge pull request#1125 from dmcdougall/oo
Reduce object-oriented boilerplate for users
2 parentsa7aaa83 +8738c1c commitdd9cfa4

27 files changed

+64
-5
lines changed

‎doc/users/whats_new.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@ Features that depend on the Python Imaging Library, such as JPEG
3838
handling, do not work, since the version of PIL for Python 3.x is not
3939
sufficiently mature.
4040

41+
Object-oriented interface
42+
-------------------------
43+
44+
Damon McDougall has reduced some of the boilerplate code needed to interact
45+
with the object-oriented interface. Now a figure canvas is set up by default::
46+
47+
>>> from matplotlib.figure import Figure
48+
>>> fig = Figure()
49+
>>> ax = fig.add_subplot(1, 1, 1)
50+
>>> fig.savefig('figure.pdf')
51+
4152
PGF/TikZ backend
4253
----------------
4354
Peter Würtz wrote a backend that allows matplotlib to export figures as

‎lib/matplotlib/backends/backend_agg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,3 +515,5 @@ def print_to_buffer(self):
515515
(int(renderer.width),int(renderer.height)))
516516
renderer.dpi=original_dpi
517517
returnresult
518+
519+
FigureCanvas=FigureCanvasAgg

‎lib/matplotlib/backends/backend_cairo.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,3 +512,5 @@ def _save (self, fo, format, **kwargs):
512512

513513
ctx.show_page()
514514
surface.finish()
515+
516+
FigureCanvas=FigureCanvasCairo

‎lib/matplotlib/backends/backend_cocoaagg.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def stop_event_loop(self):
8989
FigureCanvasBase.stop_event_loop_default(self)
9090
stop_event_loop.__doc__=FigureCanvasBase.stop_event_loop_default.__doc__
9191

92-
92+
FigureCanvas=FigureCanvasCocoaAgg
9393

9494
NibClassBuilder.extractClasses('Matplotlib.nib',mplBundle)
9595

‎lib/matplotlib/backends/backend_emf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,8 @@ def print_emf(self, filename, dpi=300, **kwargs):
727727
defget_default_filetype(self):
728728
return'emf'
729729

730+
FigureCanvas=FigureCanvasEMF
731+
730732
classFigureManagerEMF(FigureManagerBase):
731733
"""
732734
Wrap everything up into a window for the pylab interface

‎lib/matplotlib/backends/backend_fltkagg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ def stop_event_loop(self):
231231
FigureCanvasBase.stop_event_loop_default(self)
232232
stop_event_loop.__doc__=FigureCanvasBase.stop_event_loop_default.__doc__
233233

234+
FigureCanvas=FigureCanvasFltkAgg
235+
234236
defdestroy_figure(ptr,figman):
235237
figman.window.hide()
236238
Fltk.Fl.wait(0)# This is needed to make the last figure vanish.

‎lib/matplotlib/backends/backend_gdk.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ def new_figure_manager_given_figure(num, figure):
434434
returnmanager
435435

436436

437-
classFigureCanvasGDK(FigureCanvasBase):
437+
classFigureCanvasGDK(FigureCanvasBase):
438438
def__init__(self,figure):
439439
FigureCanvasBase.__init__(self,figure)
440440

@@ -472,3 +472,5 @@ def _print_image(self, filename, format, *args, **kwargs):
472472
0,0,0,0,width,height)
473473

474474
pixbuf.save(filename,format)
475+
476+
FigureCanvas=FigureCanvasGDK

‎lib/matplotlib/backends/backend_gtk.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ def _on_timer(self):
144144
returnFalse
145145

146146

147-
classFigureCanvasGTK(gtk.DrawingArea,FigureCanvasBase):
147+
classFigureCanvasGTK(gtk.DrawingArea,FigureCanvasBase):
148148
keyvald= {65507 :'control',
149149
65505 :'shift',
150150
65513 :'alt',
@@ -519,6 +519,8 @@ def stop_event_loop(self):
519519
FigureCanvasBase.stop_event_loop_default(self)
520520
stop_event_loop.__doc__=FigureCanvasBase.stop_event_loop_default.__doc__
521521

522+
FigureCanvas=FigureCanvasGTK
523+
522524
classFigureManagerGTK(FigureManagerBase):
523525
"""
524526
Public attributes

‎lib/matplotlib/backends/backend_gtk3.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def _on_timer(self):
9898
self._timer=None
9999
returnFalse
100100

101-
classFigureCanvasGTK3(Gtk.DrawingArea,FigureCanvasBase):
101+
classFigureCanvasGTK3(Gtk.DrawingArea,FigureCanvasBase):
102102
keyvald= {65507 :'control',
103103
65505 :'shift',
104104
65513 :'alt',

‎lib/matplotlib/backends/backend_gtk3agg.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ def print_png(self, filename, *args, **kwargs):
6767
agg=self.switch_backends(backend_agg.FigureCanvasAgg)
6868
returnagg.print_png(filename,*args,**kwargs)
6969

70+
FigureCanvas=FigureCanvasGTK3Agg
7071

7172
classFigureManagerGTK3Agg(backend_gtk3.FigureManagerGTK3):
7273
pass

‎lib/matplotlib/backends/backend_gtk3cairo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ def on_draw_event(self, widget, ctx):
3434

3535
returnFalse# finish event propagation?
3636

37+
FigureCanvas=FigureCanvasGTK3Cairo
3738

3839
classFigureManagerGTK3Cairo(backend_gtk3.FigureManagerGTK3):
3940
pass

‎lib/matplotlib/backends/backend_gtkagg.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def _get_toolbar(self, canvas):
3333
toolbar=None
3434
returntoolbar
3535

36+
FigureCanvas=FigureManagerGTKAgg
3637

3738
defnew_figure_manager(num,*args,**kwargs):
3839
"""

‎lib/matplotlib/backends/backend_gtkcairo.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def _renderer_init(self):
5555
if_debug:print('%s.%s()'% (self.__class__.__name__,_fn_name()))
5656
self._renderer=RendererGTKCairo (self.figure.dpi)
5757

58+
FigureCanvas=FigureCanvasGTKCairo
5859

5960
classFigureManagerGTKCairo(FigureManagerGTK):
6061
def_get_toolbar(self,canvas):

‎lib/matplotlib/backends/backend_macosx.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ def new_timer(self, *args, **kwargs):
352352
"""
353353
returnTimerMac(*args,**kwargs)
354354

355+
FigureCanvas=FigureCanvasMac
355356

356357
classFigureManagerMac(_macosx.FigureManager,FigureManagerBase):
357358
"""

‎lib/matplotlib/backends/backend_pdf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2299,6 +2299,8 @@ def print_pdf(self, filename, **kwargs):
22992299
else:# we opened the file above; now finish it off
23002300
file.close()
23012301

2302+
FigureCanvas=FigureCanvasPdf
2303+
23022304
classFigureManagerPdf(FigureManagerBase):
23032305
pass
23042306

‎lib/matplotlib/backends/backend_pgf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -838,6 +838,8 @@ def _render_texts_pgf(self, fh):
838838
defget_renderer(self):
839839
returnRendererPgf(self.figure,None)
840840

841+
FigureCanvas=FigureCanvasPgf
842+
841843
classFigureManagerPgf(FigureManagerBase):
842844
def__init__(self,*args):
843845
FigureManagerBase.__init__(self,*args)

‎lib/matplotlib/backends/backend_ps.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1357,6 +1357,8 @@ def write(self, *kl, **kwargs):
13571357
shutil.move(tmpfile,outfile)
13581358
os.chmod(outfile,mode)
13591359

1360+
FigureCanvas=FigureCanvasPS
1361+
13601362
defconvert_psfrags(tmpfile,psfrags,font_preamble,custom_preamble,
13611363
paperWidth,paperHeight,orientation):
13621364
"""

‎lib/matplotlib/backends/backend_qt.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,8 @@ def stop_event_loop(self):
203203
FigureCanvasBase.stop_event_loop_default(self)
204204
stop_event_loop.__doc__=FigureCanvasBase.stop_event_loop_default.__doc__
205205

206+
FigureCanvas=FigureCanvasQT
207+
206208
classFigureManagerQT(FigureManagerBase ):
207209
"""
208210
Public attributes

‎lib/matplotlib/backends/backend_qt4.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,8 @@ def idle_draw(*args):
377377
self._idle=True
378378
ifd:QtCore.QTimer.singleShot(0,idle_draw)
379379

380+
FigureCanvas=FigureCanvasQT
381+
380382
classFigureManagerQT(FigureManagerBase ):
381383
"""
382384
Public attributes

‎lib/matplotlib/backends/backend_qt4agg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,3 +145,5 @@ def blit(self, bbox=None):
145145
defprint_figure(self,*args,**kwargs):
146146
FigureCanvasAgg.print_figure(self,*args,**kwargs)
147147
self.draw()
148+
149+
FigureCanvas=FigureCanvasQTAgg

‎lib/matplotlib/backends/backend_qtagg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,5 @@ def blit(self, bbox=None):
156156
defprint_figure(self,*args,**kwargs):
157157
FigureCanvasAgg.print_figure(self,*args,**kwargs)
158158
self.draw()
159+
160+
FigureCanvas=FigureCanvasQTAgg

‎lib/matplotlib/backends/backend_svg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,6 +1143,8 @@ def _print_svg(self, filename, svgwriter, fh_to_close=None, **kwargs):
11431143
defget_default_filetype(self):
11441144
return'svg'
11451145

1146+
FigureCanvas=FigureCanvasSVG
1147+
11461148
classFigureManagerSVG(FigureManagerBase):
11471149
pass
11481150

‎lib/matplotlib/backends/backend_template.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,8 @@ def print_foo(self, filename, *args, **kwargs):
245245
defget_default_filetype(self):
246246
return'foo'
247247

248+
FigureCanvas=FigureCanvasTemplate
249+
248250
classFigureManagerTemplate(FigureManagerBase):
249251
"""
250252
Wrap everything up into a window for the pylab interface

‎lib/matplotlib/backends/backend_tkagg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,8 @@ def stop_event_loop(self):
505505
FigureCanvasBase.stop_event_loop_default(self)
506506
stop_event_loop.__doc__=FigureCanvasBase.stop_event_loop_default.__doc__
507507

508+
FigureCanvas=FigureCanvasTkAgg
509+
508510
classFigureManagerTkAgg(FigureManagerBase):
509511
"""
510512
Public attributes

‎lib/matplotlib/backends/backend_wx.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1400,6 +1400,7 @@ def _onEnter(self, evt):
14001400
"""Mouse has entered the window."""
14011401
FigureCanvasBase.enter_notify_event(self,guiEvent=evt)
14021402

1403+
FigureCanvas=FigureCanvasWx
14031404

14041405
########################################################################
14051406
#

‎lib/matplotlib/backends/backend_wxagg.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ def print_figure(self, filename, *args, **kwargs):
105105
ifself._isDrawn:
106106
self.draw()
107107

108+
FigureCanvas=FigureCanvasWxAgg
109+
108110
classNavigationToolbar2WxAgg(NavigationToolbar2Wx):
109111
defget_canvas(self,frame,fig):
110112
returnFigureCanvasWxAgg(frame,-1,fig)

‎lib/matplotlib/figure.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def __init__(self,
318318
self.patch.set_aa(False)
319319

320320
self._hold=rcParams['axes.hold']
321-
self.canvas=None
321+
self.canvas=self._setup_canvas()
322322

323323
ifsubplotparsisNone:
324324
subplotpars=SubplotParams()
@@ -330,6 +330,14 @@ def __init__(self,
330330
self.clf()
331331
self._cachedRenderer=None
332332

333+
def_setup_canvas(self):
334+
"""
335+
Return the FigureCanvas instance defined by the currently loaded backend.
336+
"""
337+
importmatplotlib.backendsasmbackends# lazy import
338+
backend_mod=mbackends.pylab_setup()[0]
339+
returnbackend_mod.FigureCanvas(self)
340+
333341
def_get_axes(self):
334342
returnself._axstack.as_list()
335343

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp