@@ -87,6 +87,24 @@ def _load_objects():
8787}
8888
8989
90+ def _get_renderer (fig ):
91+ """Get renderer for calculating the legend bounding box for centered-row
92+ legends. This is copied from tight_layout.py in matplotlib."""
93+ # NOTE: This will be removed when #74 is done
94+ if fig ._cachedRenderer :
95+ renderer = fig ._cachedRenderer
96+ else :
97+ canvas = fig .canvas
98+ if canvas and hasattr (canvas , 'get_renderer' ):
99+ renderer = canvas .get_renderer ()
100+ else :
101+ warnings .warn ('Falling back to Agg renderer.' )
102+ from matplotlib .backends .backend_agg import FigureCanvasAgg
103+ canvas = FigureCanvasAgg (fig )
104+ renderer = canvas .get_renderer ()
105+ return renderer
106+
107+
90108def default_latlon (self , func , * args , latlon = True , ** kwargs ):
91109 """
92110 Wraps %(methods)s for `~proplot.axes.BasemapAxes`.
@@ -2453,10 +2471,7 @@ def legend_wrapper(
24532471 legs [0 ].set_frame_on (True ) # easy!
24542472 else :
24552473 # Get coordinates
2456- if hasattr (self .figure .canvas , 'get_renderer' ):
2457- renderer = self .figure .canvas .get_renderer ()
2458- else :
2459- renderer = self .figure ._cachedRenderer
2474+ renderer = _get_renderer (self .figure )
24602475 bboxs = [leg .get_window_extent (renderer ).transformed (
24612476 self .transAxes .inverted ()) for leg in legs ]
24622477 xmin , xmax = min (bbox .xmin for bbox in bboxs ), max (
0 commit comments