Colocación correcta de la barra de colores en relación con los ejes geográficos (cartopy)

Con Cartopy, me gustaría tener un control total de dónde va mi barra de colores. Por lo general, hago esto obteniendo la posición actual de los ejes como base y luego creo nuevos ejes para la barra de colores. Esto funciona bien para los ejes matplotlib estándar, pero no cuando se utiliza Cartopy y geo_axes, ya que esto distorsionará los ejes.

Entonces, mi pregunta es: ¿cómo obtengo la posición exacta de mis geo_axes?

Aquí hay un ejemplo de código basado en los documentos de Cartopyhttp://scitools.org.uk/cartopy/docs/latest/matplotlib/advanced_plotting.html:

import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import os
from netCDF4 import Dataset as netcdf_dataset
from cartopy import config

def main():
    fname = os.path.join(config["repo_data_dir"],
                     'netcdf', 'HadISST1_SST_update.nc'
                     )

    dataset = netcdf_dataset(fname)

    sst = dataset.variables['sst'][0, :, :]
    lats = dataset.variables['lat'][:]
    lons = dataset.variables['lon'][:]

    #my preferred way of creating plots (even if it is only one plot)
    ef, ax = plt.subplots(1,1,figsize=(10,5),subplot_kw={'projection': ccrs.PlateCarree()})
    ef.subplots_adjust(hspace=0,wspace=0,top=0.925,left=0.1)

    #get size and extent of axes:
    axpos = ax.get_position()
    pos_x = axpos.x0+axpos.width + 0.01# + 0.25*axpos.width
    pos_y = axpos.y0
    cax_width = 0.04
    cax_height = axpos.height
    #create new axes where the colorbar should go.
    #it should be next to the original axes and have the same height!
    pos_cax = ef.add_axes([pos_x,pos_y,cax_width,cax_height])

    im = ax.contourf(lons, lats, sst, 60, transform=ccrs.PlateCarree())

    ax.coastlines()

    plt.colorbar(im, cax=pos_cax)

    ax.coastlines(resolution='110m')
    ax.gridlines()
    ax.set_extent([-20, 60, 33, 63])

    #when using this line the positioning of the colorbar is correct,
    #but the image gets distorted.
    #when omitting this line, the positioning of the colorbar is wrong,
    #but the image is well represented (not distorted).
    ax.set_aspect('auto', adjustable=None)

    plt.savefig('sst_aspect.png')
    plt.close()



if __name__ == '__main__': main()

Figura resultante, cuando se usa "set_aspect":

Figura resultante, al omitir "set_aspect":

Básicamente, me gustaría obtener la primera figura (barra de colores colocada correctamente) pero sin usar el "set_aspect". Supongo que esto debería ser posible con algunas transformaciones, pero hasta ahora no encontré una solución.

¡Gracias!