在
mark_inset有两个参数
loc1,并
loc2设置两个连接器的位置。这样,盒子和插入轴的位置相同。
但是,我们可以在
mark_inset函数中添加两个新参数,以为连接器的开始和结束设置不同的位置。
import matplotlib.pyplot as pltfrom mpl_toolkits.axes_grid1.inset_locator import TransformedBbox, BboxPatch, BboxConnector import numpy as npfig, (ax, axins) = plt.subplots(nrows=2)x = np.linspace(0,6*np.pi)y = np.sin(x)ax.plot(x,y)axins.plot(x,y)axins.set_xlim((2*np.pi, 2.5*np.pi))axins.set_ylim((0, 1))# draw a bbox of the region of the inset axes in the parent axes and# connecting lines between the bbox and the inset axes area# loc1, loc2 : {1, 2, 3, 4} def mark_inset(parent_axes, inset_axes, loc1a=1, loc1b=1, loc2a=2, loc2b=2, **kwargs): rect = TransformedBbox(inset_axes.viewLim, parent_axes.transData) pp = BboxPatch(rect, fill=False, **kwargs) parent_axes.add_patch(pp) 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, p2mark_inset(ax, axins, loc1a=1, loc1b=4, loc2a=2, loc2b=3, fc="none", ec="crimson")plt.draw()plt.show()


