88import numpy as np
99from numpy import ma
1010
11- from matplotlib import _preprocess_data , rcParams
11+ import matplotlib . category as _ # <-registers a category unit converter
1212import matplotlib .cbook as cbook
1313import matplotlib .collections as mcoll
1414import matplotlib .colors as mcolors
1515import matplotlib .contour as mcontour
16- import matplotlib .category as _ # <-registers a category unit converter
1716import matplotlib .dates as _ # <-registers a date unit converter
1817import matplotlib .docstring as docstring
1918import matplotlib .image as mimage
2019import matplotlib .legend as mlegend
2120import matplotlib .lines as mlines
2221import matplotlib .markers as mmarkers
2322import matplotlib .mlab as mlab
24- import matplotlib .path as mpath
2523import matplotlib .patches as mpatches
24+ import matplotlib .path as mpath
2625import matplotlib .quiver as mquiver
2726import matplotlib .stackplot as mstack
2827import matplotlib .streamplot as mstream
3130import matplotlib .ticker as mticker
3231import matplotlib .transforms as mtransforms
3332import matplotlib .tri as mtri
34- from matplotlib . container import BarContainer , ErrorbarContainer , StemContainer
33+ from matplotlib import _preprocess_data , rcParams
3534from matplotlib .axes ._base import _AxesBase , _process_plot_format
3635from matplotlib .axes ._secondary_axes import SecondaryAxis
36+ from matplotlib .container import BarContainer , ErrorbarContainer , StemContainer
3737
3838try :
3939 from numpy .lib .histograms import histogram_bin_edges
@@ -514,9 +514,12 @@ def indicate_inset(self, bounds, inset_ax=None, *, transform=None,
514514 rectangle_patch : `.Patches.Rectangle`
515515 Rectangle artist.
516516
517- connector_lines : 4-tuple of `.Patches.ConnectionPatch`
518- One for each of four connector lines. Two are set with visibility
519- to *False*, but the user can set the visibility to True if the
517+ connector_lines : optional 4-tuple of `.Patches.ConnectionPatch`
518+ Each of four connector lines coming from the given rectangle
519+ on this axes in the order lower left, upper left, lower right,
520+ upper right: *None* if *inset_ax* is *None*.
521+ Two are set with visibility to *False*,
522+ but the user can set the visibility to *True* if the
520523 automatic choice is not deemed correct.
521524
522525 """
@@ -535,25 +538,31 @@ def indicate_inset(self, bounds, inset_ax=None, *, transform=None,
535538 zorder = zorder , label = label , transform = transform , ** kwargs )
536539 self .add_patch (rectpatch )
537540
541+ connects = []
542+
538543 if inset_ax is not None :
539544 # want to connect the indicator to the rect....
540- connects = []
541545 xr = [bounds [0 ], bounds [0 ]+ bounds [2 ]]
542546 yr = [bounds [1 ], bounds [1 ]+ bounds [3 ]]
543547 for xc in range (2 ):
544548 for yc in range (2 ):
545549 xyA = (xc , yc )
546550 xyB = (xr [xc ], yr [yc ])
547- connects += [mpatches .ConnectionPatch (xyA , xyB ,
551+ connects .append (
552+ mpatches .ConnectionPatch (
553+ xyA , xyB ,
548554 'axes fraction' , 'data' ,
549555 axesA = inset_ax , axesB = self , arrowstyle = "-" ,
550- zorder = zorder , edgecolor = edgecolor , alpha = alpha )]
556+ zorder = zorder , edgecolor = edgecolor , alpha = alpha
557+ )
558+ )
551559 self .add_patch (connects [- 1 ])
552560 # decide which two of the lines to keep visible....
553561 pos = inset_ax .get_position ()
554562 bboxins = pos .transformed (self .figure .transFigure )
555563 rectbbox = mtransforms .Bbox .from_bounds (
556- * bounds ).transformed (transform )
564+ * bounds
565+ ).transformed (transform )
557566 x0 = rectbbox .x0 < bboxins .x0
558567 x1 = rectbbox .x1 < bboxins .x1
559568 y0 = rectbbox .y0 < bboxins .y0
@@ -563,7 +572,7 @@ def indicate_inset(self, bounds, inset_ax=None, *, transform=None,
563572 connects [2 ].set_visible (x1 == y0 )
564573 connects [3 ].set_visible (x1 ^ y1 )
565574
566- return rectpatch , connects
575+ return rectpatch , tuple ( connects ) if connects else None
567576
568577 def indicate_inset_zoom (self , inset_ax , ** kwargs ):
569578 """
@@ -583,25 +592,29 @@ def indicate_inset_zoom(self, inset_ax, **kwargs):
583592 chosen so as to not overlap with the indicator box.
584593
585594 **kwargs
586- Other *kwargs* are passed on to `.Axes.inset_rectangle `
595+ Other *kwargs* are passed on to `.Axes.indicate_inset `
587596
588597 Returns
589598 -------
590599 rectangle_patch : `.Patches.Rectangle`
591600 Rectangle artist.
592601
593602 connector_lines : 4-tuple of `.Patches.ConnectionPatch`
594- One for each of four connector lines. Two are set with visibility
595- to *False*, but the user can set the visibility to True if the
596- automatic choice is not deemed correct.
603+ Each of four connector lines coming from the rectangle drawn on
604+ this axis, in the order lower left, upper left, lower right,
605+ upper right.
606+ Two are set with visibility to *False*, but the user can
607+ set the visibility to *True* if the automatic choice is not deemed
608+ correct.
597609
598610 """
599611
600612 xlim = inset_ax .get_xlim ()
601613 ylim = inset_ax .get_ylim ()
602- rect = [ xlim [0 ], ylim [0 ], xlim [1 ] - xlim [0 ], ylim [1 ] - ylim [0 ]]
614+ rect = ( xlim [0 ], ylim [0 ], xlim [1 ] - xlim [0 ], ylim [1 ] - ylim [0 ])
603615 rectpatch , connects = self .indicate_inset (
604- rect , inset_ax , ** kwargs )
616+ rect , inset_ax , ** kwargs
617+ )
605618
606619 return rectpatch , connects
607620
0 commit comments