Python 如何在同一图形中缩放图形的一部分

Python 如何在同一图形中缩放图形的一部分,python,matplotlib,zooming,Python,Matplotlib,Zooming,首先,我的问题在这些帖子(,)中得到了部分回答,但我不能在那里发表评论,因为我是社区的新手,没有这样做的许可 这么说,我的代码生成了这个图: 这正是我想要的,但是缩放太小了,当我改变缩放时,长方体的纵横比会成比例地改变。对于8倍变焦: 我曾尝试改变Axin的纵横比,但就是不起作用,我想要的缩放非常大,以捕捉接近零的线条波动: 除此之外,代码还使用与原始线条不同的颜色打印缩放。当然,我可以注意到这是因为我绘制了两次图,一次用于ax,另一次用于Axin。我怎样才能解决这个问题 from mpl

首先,我的问题在这些帖子(,)中得到了部分回答,但我不能在那里发表评论,因为我是社区的新手,没有这样做的许可

这么说,我的代码生成了这个图:

这正是我想要的,但是缩放太小了,当我改变缩放时,长方体的纵横比会成比例地改变。对于8倍变焦:

我曾尝试改变Axin的纵横比,但就是不起作用,我想要的缩放非常大,以捕捉接近零的线条波动:

除此之外,代码还使用与原始线条不同的颜色打印缩放。当然,我可以注意到这是因为我绘制了两次图,一次用于ax,另一次用于Axin。我怎样才能解决这个问题

from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes 
from mpl_toolkits.axes_grid1.inset_locator import mark_inset

fig=plt.figure()
sns.set_style('whitegrid', {'legend.frameon':True})
sns.set_palette("deep")

fig= plt.subplots(figsize=(10,5))
ax=plt.axes()
ax.plot(me_re5200['y^+'],me_re5200['U'],markevery=0.2,marker='o',label='$\\overline{u}$ em Re = 5200')
ax.plot(me_re2000['y^+'],me_re2000['U'],markevery=0.3,marker='o',label='$\\overline{u}$ em Re = 2000')
ax.plot(me_re5200['y^+'],me_re5200[' W'],markevery=0.2,marker='o',label='$\\overline{w}$ em Re = 5200')
ax.plot(me_re2000['y^+'],me_re2000['W'],markevery=0.3,marker='o',label='$\\overline{w}$ em Re = 2000')

plt.xscale('symlog')
plt.grid(True)
plt.ylabel("$U^+$")
plt.xlabel('$y^{+}$')
plt.xlim(1,None)
plt.legend(frameon=True,edgecolor='grey',loc=6)

x1,x2=30,80
y1,y2=-1,1

axins=zoomed_inset_axes(ax, 2,loc='center right') # 2 = zoom
axins.plot(me_re5200['y^+'],me_re5200[' W'],markevery=0.2,marker='o')
axins.plot(me_re2000['y^+'],me_re2000['W'],markevery=0.3,marker='o')
plt.xscale('symlog')

axins.axis([x1, x2, y1, y2])
plt.xticks(visible=False)
plt.yticks(visible=True)
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
plt.draw()
plt.show()