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

14

我正在尝试使用matplotlib制作嵌入式图。目前我有类似于How to zoomed a portion of image and insert in the same plot in 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()

因此,我的目的是能够单独更改插入物的宽度和高度,而不更改插入物的x和y范围。


你能提供一些你目前所拥有的工作示例代码吗? - Ffisegydd
有人在这方面取得了进展吗?我也想做同样的事情。 - Thursdays Coming
1个回答

29
对于其他寻找此功能的人,结果表明可以使用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

1,1 部分设置插图的宽度和高度。之后,使用 xlim()ylim() 设置轴的范围,而不改变插图框的大小或形状。


运行得非常好。我使用了 axins = inset_axes(ax, 3, 1, loc=2, bbox_to_anchor=(0.2, 0.55), bbox_transform=ax.figure.transFigure) # no zoom 来仅缩放x轴。 - M . Franklin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接