I’m using the AxesGrid class to make a plot that looks like this one : 
The code basically looks like this :
grid = AxesGrid(fig,
111,
nrows_ncols = (2,2),
axes_pad = 0.50,
label_mode = "all",
cbar_location='right',
cbar_mode='single',
cbar_pad =0.3,
cbar_size='5%'
)
and then for each of the 4 panels I call imshow and contour like this :
# some definitions etc.
im1 = grid[0].imshow(np.transpose(De[i1:i2,j1:j2]),
aspect='equal',
vmin=vmin, vmax = vmax,
origin='lower',
extent=extent)
# some other stuff [...]
grid[0].contour(np.transpose(F[i1:i2,j1:j2]),levels=levls,
extent=extent,colors='k',cmap=None)
# and so on for the 3 other panels
The only difference is that now, I’d like the images to have different value for the extent keyword.
Say I want the upper right image to have an extent of (31.5,35.5,11,14) and the lower right panel to have an extent of (29.5, 33.5, 11, 14), I get this :

It seems that matplotlib adjusts the axes. Is there a way to specify the extent I’d like and not have the empty white space between my data and the axe ?
Add the parameter:
To your Grid generation. Then you can set the xlim of each plot individually.