If you're okay with a fixed figure size, you can use plt.figaspect to set

this up fairly easily: (i.e. this will be incorrect as soon as you resize

the plot window)

import numpy as npimport matplotlib.pyplot as plt

nrows, ncols = 8, 12

dx, dy = 1, 2

figsize = plt.figaspect(float(dy * nrows) / float(dx * ncols))

fig, axes = plt.subplots(nrows, ncols, figsize=figsize)for ax in axes.flat:

data = np.random.random((10*dy, 10*dx))

ax.imshow(data, interpolation='none', cmap='gray')

ax.set(xticks=[], yticks=[])

pad = 0.05 # Padding around the edge of the figure

xpad, ypad = dx * pad, dy * pad

fig.subplots_adjust(left=xpad, right=1-xpad, top=1-ypad, bottom=ypad)

plt.show()

(From here, for reference:

https://stackoverflow.com/questions/32633322/changing-aspect-ratio-of-subplots-in-matplotlib/32635933#32635933

)

If you need the spacing to remain constant as the figure size changes,

it's possible, but more complex. You may find it's easiest to use

draw callbacks in that case.

Hope that helps,

-Joe

## ···

On Tue, Oct 30, 2018 at 4:44 PM Daniele Nicolodi <daniele at grinta.net> wrote:

Hello,

I would like to arrange a number of square subplots (as in subplots with

square axes as obtained with `ax.axis('equal')`) in a grid such that the

distance between rows and columns is exactly the same.

I can use a GridSpec but, as soon as I ask for the axes to be square,

the distance between axes changes. Is there a way to enforce the equal

distances constrain (namely stretch the padding between the axes and the

margin of the figure but do not stretch the padding between axes) or the

only solution is to do it manually?

Thank you in advance.

Best,

Dan

_______________________________________________

Matplotlib-users mailing list

Matplotlib-users at python.org

https://mail.python.org/mailman/listinfo/matplotlib-users

-------------- next part --------------

An HTML attachment was scrubbed...

URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20181031/03e305ec/attachment.html>