title: Correct placement of colorbar relative to geo axes (cartopy)
body: <p>Using Cartopy, I would like to have full control of where my colorbar goes. Usually I do this by getting the current axes position as basis and then create new axes for the colorbar. This works well for standard matplotlib axes but not when using Cartopy and geo_axes, because this will distort the axes.</p>
  
  <p>So, my question is: how do I get the exact position of my geo_axes?</p>
  
  <p>Here is a code example based on the Cartopy docs <a href="http://scitools.org.uk/cartopy/docs/latest/matplotlib/advanced_plotting.html" rel="noreferrer">http://scitools.org.uk/cartopy/docs/latest/matplotlib/advanced_plotting.html</a>:</p>
  
  <pre><code>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()
  </code></pre>
  
  <p>Resulting Figure, when using "set_aspect":
  <img src="https://i.stack.imgur.com/iGbLw.png" alt="enter image description here"></p>
  
  <p>Resulting Figure, when omitting "set_aspect":
  <img src="https://i.stack.imgur.com/PioZE.png" alt="enter image description here"></p>
  
  <p>Basically, I'd like to obtain the first figure (correctly placed colorbar) but without using the "set_aspect".
  I guess this should be possible with some transformations, but I didn't find a solution so far.</p>
  
  <p>Thanks!</p>