diff --git a/lib/mpl_toolkits/axes_grid1/inset_locator.py b/lib/mpl_toolkits/axes_grid1/inset_locator.py index b3cd7c31604f..9d350510742f 100644 --- a/lib/mpl_toolkits/axes_grid1/inset_locator.py +++ b/lib/mpl_toolkits/axes_grid1/inset_locator.py @@ -278,10 +278,16 @@ def get_path(self): return Path(path_merged) -def _add_inset_axes(parent_axes, inset_axes): +def _add_inset_axes(parent_axes, axes_class, axes_kwargs, axes_locator): """Helper function to add an inset axes and disable navigation in it.""" - parent_axes.figure.add_axes(inset_axes) - inset_axes.set_navigate(False) + if axes_class is None: + axes_class = HostAxes + if axes_kwargs is None: + axes_kwargs = {} + inset_axes = axes_class( + parent_axes.figure, parent_axes.get_position(), + **{"navigate": False, **axes_kwargs, "axes_locator": axes_locator}) + return parent_axes.figure.add_axes(inset_axes) @_docstring.dedent_interpd @@ -386,42 +392,25 @@ def inset_axes(parent_axes, width, height, loc='upper right', Inset axes object created. """ - if axes_class is None: - axes_class = HostAxes - if axes_kwargs is None: - axes_kwargs = {} - inset_axes = axes_class(parent_axes.figure, parent_axes.get_position(), - **axes_kwargs) - - if bbox_transform in [parent_axes.transAxes, - parent_axes.figure.transFigure]: - if bbox_to_anchor is None: - _api.warn_external("Using the axes or figure transform requires a " - "bounding box in the respective coordinates. " - "Using bbox_to_anchor=(0, 0, 1, 1) now.") - bbox_to_anchor = (0, 0, 1, 1) - + if (bbox_transform in [parent_axes.transAxes, parent_axes.figure.transFigure] + and bbox_to_anchor is None): + _api.warn_external("Using the axes or figure transform requires a " + "bounding box in the respective coordinates. " + "Using bbox_to_anchor=(0, 0, 1, 1) now.") + bbox_to_anchor = (0, 0, 1, 1) if bbox_to_anchor is None: bbox_to_anchor = parent_axes.bbox - if (isinstance(bbox_to_anchor, tuple) and (isinstance(width, str) or isinstance(height, str))): if len(bbox_to_anchor) != 4: raise ValueError("Using relative units for width or height " "requires to provide a 4-tuple or a " "`Bbox` instance to `bbox_to_anchor.") - - axes_locator = AnchoredSizeLocator(bbox_to_anchor, - width, height, - loc=loc, - bbox_transform=bbox_transform, - borderpad=borderpad) - - inset_axes.set_axes_locator(axes_locator) - - _add_inset_axes(parent_axes, inset_axes) - - return inset_axes + return _add_inset_axes( + parent_axes, axes_class, axes_kwargs, + AnchoredSizeLocator( + bbox_to_anchor, width, height, loc=loc, + bbox_transform=bbox_transform, borderpad=borderpad)) @_docstring.dedent_interpd @@ -493,22 +482,12 @@ def zoomed_inset_axes(parent_axes, zoom, loc='upper right', Inset axes object created. """ - if axes_class is None: - axes_class = HostAxes - if axes_kwargs is None: - axes_kwargs = {} - inset_axes = axes_class(parent_axes.figure, parent_axes.get_position(), - **axes_kwargs) - - axes_locator = AnchoredZoomLocator(parent_axes, zoom=zoom, loc=loc, - bbox_to_anchor=bbox_to_anchor, - bbox_transform=bbox_transform, - borderpad=borderpad) - inset_axes.set_axes_locator(axes_locator) - - _add_inset_axes(parent_axes, inset_axes) - - return inset_axes + return _add_inset_axes( + parent_axes, axes_class, axes_kwargs, + AnchoredZoomLocator( + parent_axes, zoom=zoom, loc=loc, + bbox_to_anchor=bbox_to_anchor, bbox_transform=bbox_transform, + borderpad=borderpad)) class _TransformedBboxWithCallback(TransformedBbox): @@ -565,11 +544,8 @@ def mark_inset(parent_axes, inset_axes, loc1, loc2, **kwargs): inset_axes.viewLim, parent_axes.transData, callback=parent_axes._unstale_viewLim) - if 'fill' in kwargs: - pp = BboxPatch(rect, **kwargs) - else: - fill = bool({'fc', 'facecolor', 'color'}.intersection(kwargs)) - pp = BboxPatch(rect, fill=fill, **kwargs) + kwargs.setdefault("fill", bool({'fc', 'facecolor', 'color'}.intersection(kwargs))) + pp = BboxPatch(rect, **kwargs) parent_axes.add_patch(pp) p1 = BboxConnector(inset_axes.bbox, rect, loc1=loc1, **kwargs)