我必须做几个子图,每个子图在相对于子图的相同自定义位置都有一个插图。
原则上可以使用本axes_grid1
示例中给出的方法来完成,但是,对于我的目的,或中的位置参数不够具体。loc=
inset_axes
zoomed_inset_axes
我也尝试过GridSpec
's get_grid_positions
,但我无法理解它返回的参数。
我怎样才能让插图在每个子图中看起来都一样,而不必被迫将它们放在特定位置?
我必须做几个子图,每个子图在相对于子图的相同自定义位置都有一个插图。
原则上可以使用本axes_grid1
示例中给出的方法来完成,但是,对于我的目的,或中的位置参数不够具体。loc=
inset_axes
zoomed_inset_axes
我也尝试过GridSpec
's get_grid_positions
,但我无法理解它返回的参数。
我怎样才能让插图在每个子图中看起来都一样,而不必被迫将它们放在特定位置?
您可以手动完成:
ncols = 2
nrows = 2
inset_hfrac = .3
inset_vfrac = .3
inset_hfrac_offset = .6
inset_vfrac_offset = .6
top_pad = .1
bottom_pad = .1
left_pad = .1
right_pad = .1
hspace = .1
vspace = .1
ax_width = (1 - left_pad - right_pad - (ncols - 1) * hspace) / ncols
ax_height = (1 - top_pad - bottom_pad - (nrows - 1) * vspace) / nrows
fig = figure()
ax_lst = []
for j in range(ncols):
for k in range(nrows):
a_bottom = bottom_pad + k * ( ax_height + vspace)
a_left = left_pad + j * (ax_width + hspace)
inset_bottom = a_bottom + inset_vfrac_offset * ax_height
inset_left = a_left + inset_hfrac_offset * ax_width
ax = fig.add_axes([a_left, a_bottom, ax_width, ax_height])
ax_in = fig.add_axes([inset_left, inset_bottom, ax_width * inset_hfrac, ax_height * inset_vfrac])
ax_lst.append((ax,ax_in))
这会让你失去使用的能力tight_layout
,但会让你获得大量的控制权。