2

I have to do several subplots, each with an inset at the same custom location relative to the subplot.

It can be done in principle with axes_grid1 as given in this example, however, the location parameter loc= in inset_axes or zoomed_inset_axes is not specific enough for my purpose.

I have also tried with GridSpec's get_grid_positions, but I cannot make sense of the parameters it returns.

How can I get insets to look the same in each subplot without being forced to put them at specific locations?

1

1 Answer 1

4

You can do it by hand:

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))

This costs you the ability to use tight_layout, but gains you a tremendous amount of control.

Sign up to request clarification or add additional context in comments.

2 Comments

That works nicely! Do you think it's possible to relate your parameters (a_bottom, a_left) to the ones returned by gridspec's get_grid_positions(fig)?
It is probably possible, but I am not familiar with get_grid_positions.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.