缩放的inset,matplotlib中不同的x和y缩放比例

Jon*_*ren 10 python plot matplotlib insets

我正在尝试使用matplotlib制作插图.目前我有一些类似于如何缩放图像的一部分并在matplotlib中插入相同图中的最后一个答案

那里有一个参数确定缩放系数.但是,我想改变x和y轴之间的比例,即我想在x轴上放大更多.(因此在示例中,正方形将映射到插图中的矩形).

我该如何实现这一目标?

这是一个工作示例:

import pylab as pl
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes
from mpl_toolkits.axes_grid1.inset_locator import mark_inset

x=np.linspace(0,1,100)
y=x**2

ax=pl.subplot(1,1,1)
ax.plot(x,y)

axins = zoomed_inset_axes(ax, 1, loc=2,bbox_to_anchor=(0.2, 0.55),bbox_transform=ax.figure.transFigure) # zoom = 6



axins.plot(x,y)

x1, x2= .4, .6
y1,y2 = x1**2,x2**2
axins.set_xlim(x1, x2)
axins.set_ylim(y1, y2)
mark_inset(ax, axins, loc1=1, loc2=3, fc="none", ec="0.5")
pl.show()
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是能够分别改变插入的宽度和高度,而不改变插入的x和y范围.

Thu*_*ing 17

对于其他寻找此问题的人来说,事实证明这可以通过使用该inset_axes()方法而不是zoomed_inset_axes().

例如:

axins = inset_axes(ax, 1,1 , loc=2,bbox_to_anchor=(0.2, 0.55),bbox_transform=ax.figure.transFigure) # no zoom
Run Code Online (Sandbox Code Playgroud)

该1,1部分分别设置插图的宽度和高度.在此之后,使用xlim()和ylim()设置轴的范围而不更改插入框的大小或形状.