8000 Reduce object-oriented boilerplate for users · matplotlib/matplotlib@700b26b · GitHub
[go: up one dir, main page]

Skip to content

Commit 700b26b

Browse files
committed
Reduce object-oriented boilerplate for users
Now, one can work with the default backend to create figures, without the need to attach a canvas manually. For example: import matplotlib matplotlib.use('agg') from matplotlib.figure import Figure fig = Figure() ax = fig.add_subplot(1, 1, 1) ax.plot([1, 2, 3], [1, 2, 3]) fig.savefig('oo.png')
1 parent cadd152 commit 700b26b

File tree

1 file changed

+43
-1
lines changed

1 file changed

+43
-1
lines changed

lib/matplotlib/figure.py

Lines changed: 43 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._current_figure_canvas()
322322

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

333+
def _current_figure_canvas(self):
334+
b = rcParams['backend'].lower()
335+
if b == 'agg':
336+
from backends.backend_agg import FigureCanvasAgg as FigureCanvas
337+
elif b == 'cairo':
338+
from backends.backend_cairo import FigureCanvasCairo as FigureCanvas
339+
elif b == 'cocoaag':
340+
from backends.backend_cocoaagg import FigureCanvasCocoaAgg as FigureCanvas
341+
elif b == 'fltkagg':
342+
from backends.backend_fltkagg import FigureCanvasFltkAgg as FigureCanvas
343+
elif b == 'gdk':
344+
from backends.backend_gdk import FigureCanvasGDK as FigureCanvas
345+
elif b == 'gtk':
346+
from backends.backend_gtk import FigureCanvasGTK as FigureCanvas
347+
elif b == 'gtkagg':
348+
from backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas
349+
elif b == 'gtkcairo':
350+
from backends.backend_gtkcairo import FigureCanvasGTKCairo as FigureCanvas
351+
elif b == 'macosx':
352+
from backends.backend_macosx import FigureCanvasMac as FigureCanvas
353+
elif b == 'pdf':
354+
from backends.backend_pdf import FigureCanvasPdf as FigureCanvas
355+
elif b == 'ps':
356+
from backends.backend_ps import FigureCanvasPS as FigureCanvas
357+
elif b == 'qtagg':
358+
from backends.backend_qtagg import FigureCanvasQTAgg as FigureCanvas
359+
elif b == 'qt4agg':
360+
from backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
361+
elif b == 'svg':
362+
from backends.backend_svg import FigureCanvasSVG as FigureCanvas
363+
elif b == 'template':
364+
from backends.backend_template import FigureCanvasTemplate as FigureCanvas
365+
elif b == 'tkagg':
366+
from backends.backend_tkagg import FigureCanvasTkAgg as FigureCanvas
367+
elif b == 'wx':
368+
from backends.backend_wx import FigureCanvasWx as FigureCanvas
369+
elif b == 'wxagg':
370+
from backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
371+
else:
372+
return None
373+
return FigureCanvas(self)
374+
333375
def _get_axes(self):
334376
return self._axstack.as_list()
335377

0 commit comments

Comments
 (0)
0