def draw_from_point_to_bbox(parent_axes: Axes, insert_axes: Axes, point: Sequence, loc=1, **kwargs): """ add a box connector from a point to an axes """ from mpl_toolkits.axes_grid1.inset_locator import TransformedBbox, BboxConnector, Bbox rect = TransformedBbox(Bbox([point, point]), parent_axes.transData) # rect = TransformedBbox(Bbox([[1, 0], [1, 0]]), parent_axes.transData) p1 = BboxConnector(rect, insert_axes.bbox, loc, **kwargs) parent_axes.add_patch(p1) p1.set_clip_on(False) return p1
def draw_from_point_to_point(parent_axes: Axes, insert_axes: Axes, point1: Sequence, point2: Sequence, **kwargs): """ add a box connector from a point in on axes to a point in another axes """ from mpl_toolkits.axes_grid1.inset_locator import TransformedBbox, BboxConnector, Bbox rect = TransformedBbox(Bbox([point1, point1]), parent_axes.transData) rect2 = TransformedBbox(Bbox([point2, point2]), insert_axes.transData) # rect = TransformedBbox(Bbox([[1, 0], [1, 0]]), parent_axes.transData) loc = 1 p1 = BboxConnector(rect, rect2, loc, **kwargs) parent_axes.add_patch(p1) p1.set_clip_on(False) return p1
def mark_inset(parent_axes: Axes, inset_axes: Axes, loc1: Union[int, Sequence[int]] = 1, loc2: Union[int, Sequence[int]] = 2, **kwargs): """ like the mark_inset function from matplotlib, but loc can also be a tuple """ from mpl_toolkits.axes_grid1.inset_locator import TransformedBbox, BboxPatch, BboxConnector try: loc1a, loc1b = loc1 except: loc1a = loc1 loc1b = loc1 try: loc2a, loc2b = loc2 except: loc2a = loc2 loc2b = loc2 rect = TransformedBbox(inset_axes.viewLim, parent_axes.transData) pp = BboxPatch(rect, fill=False, **kwargs) parent_axes.add_patch(pp) pp.set_clip_on(False) p1 = BboxConnector(inset_axes.bbox, rect, loc1=loc1a, loc2=loc1b, **kwargs) inset_axes.add_patch(p1) p1.set_clip_on(False) p2 = BboxConnector(inset_axes.bbox, rect, loc1=loc2a, loc2=loc2b, **kwargs) inset_axes.add_patch(p2) p2.set_clip_on(False) return pp, p1, p2