I created a plot with matplotlib's ImageGrid helper class. Here's the code below:

from mpl_tookits.axes_grid1 import ImageGrid from matplotlib.pyplot import * fig = figure(figsize=(20, 12), dpi=300) grid = ImageGrid(fig, 111, nrows_ncols=(3, 4), axes_pad=1, aspect=False) for gridax, (i, sub) in zip(grid, enumerate(eyelink_data)): subnum = i + start_with # format data xdat = sub['x'][(sub['in_trl'] == True) & (sub['x'].notnull()) & (sub['y'].notnull())] ydat = sub['y'][(sub['in_trl'] == True) & (sub['x'].notnull()) & (sub['y'].notnull())] # plot gridax.hist2d(xdat, ydat, bins=[np.linspace(-.005, .005, num=1000), np.linspace(-.005, .005, num=1000)]) gridax.plot(0, 0, 'ro') # origin show()

I looked to this cookbook page for information on how to set a single x and y label for the entire figure, but these recipes seem only to apply to standard figures with standard subplots.

I also took a peek at some of mpl_toolkits.axes_grid1.axes_divider.LocatableAxes 's methods, but nothing jumped out at me. Idem for the methods in mpl_toolkits.axes_grid1.axes_grid.ImageGrid .