matplotlib 图的插图缩放标记在错误的角上

Hei*_*urt 4 python plot matplotlib

我想绘制一条曲线并进行缩放,并有一个插图显示绘图特定部分的缩放。这是我的代码,部分实现了这一点:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset

fig, ax = plt.subplots()
axins = inset_axes(ax, 1,1 , loc=2, bbox_to_anchor=(.08, 0.35),bbox_transform=axfft.figure.transFigure)

x = np.linspace(0, 3, 100)
y = x**2
ax.plot(x, y)
axins.plot(x, y)

x1, x2, y1, y2 = 1, 2, .5, 4.5 # specify the limits
axins.set_xlim(x1, x2) # apply the x-limits
axins.set_ylim(y1, y2) # apply the y-limits

plt.xticks(visible=False)
plt.yticks(visible=False)

mark_inset(ax, axins, loc1=2, loc2=3, fc="none", ec="0.5")
Run Code Online (Sandbox Code Playgroud)

这是它产生的输出:

在此输入图像描述

我的问题:

如何将mark_inset线条放在插图的右角而不是左角?目前的情况是,指标线穿过我的插图,我不希望这样。

Imp*_*est 5

mark_inset始终在插入矩形和位置矩形上使用相同的角。您可以使用loc1loc2参数来设置它们。

为了防止线交叉轴,您可以使用

mark_inset(ax, axins, loc1=1, loc2=3, fc="none", ec="0.5")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 在这种情况下,您不能使用“mark_inset”,而是需要以不同的方式绘制连接线。`matplotlib.patches.ConnectionPatch` 可能会帮助您做到这一点。 (2认同)