我想使用,zoomed_inset_axes但盒子一旦通过主要人物的框架就会被截断。我无法变得更好
f.tight_layout()f.subplots_adjust(bottom=...)'figure.autolayout': Truef.text外部某处的隐藏(白色)文本。有谁知道如何正确地做到这一点?
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import zoomed_inset_axes, mark_inset
X = np.random.normal(.5,10,1000)
Y = np.random.normal(.5,10,1000)
f, ax = plt.subplots(1, figsize=(10,6))
ax.scatter(X,Y)
# # Setup zoom window
axins = zoomed_inset_axes(ax, 2, loc="center", bbox_to_anchor=(0,0))
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec="0.5")
axins.set_xlim([-15,0])
axins.set_ylim([-12,-3])
# # Plot zoom window
axins.scatter(X,Y)
f.tight_layout()
f.savefig('test.png', dpi=70)
Run Code Online (Sandbox Code Playgroud)
使用subplots_adjust朝着正确的方向发展。之后不要使用tight_layout,因为这会覆盖通过subplots_adjust.
您可以决定选择类似的东西
fig.subplots_adjust(left=0.2, bottom=0.2)
Run Code Online (Sandbox Code Playgroud)
为图左下角的插图留出一些空间。
然后你需要定位插图。由于您在左下角工作,因此这相对容易。该loc参数需要设置在左下角,您可能会坚持该bbox_to_anchor=(0,0)位置。然后只需通过borderpad=3(以字体大小为单位)添加一些填充,这样插入轴的标签仍然可见,
zoomed_inset_axes(ax, 2, loc='lower left', bbox_to_anchor=(0,0), borderpad=3)
Run Code Online (Sandbox Code Playgroud)
完整代码:
fig.subplots_adjust(left=0.2, bottom=0.2)
Run Code Online (Sandbox Code Playgroud)
一般来说,您有很多选项来定位和调整插图的大小。我最近在 matplotlib 页面上创建了一个新示例:Inset Locator Demo,目前仅在 devdocs 中可用,以显示不同参数之间的相互作用(在这种情况下inset_axes- 但它完全适用于zoomed_inset_axes)。