title: Drawing Circles with cartopy in orthographic projection
body: <p>I am trying to draw circles at a given geographical coordinate with a certain radius using cartopy. I want to draw using an orthographic projection, which is centred at the centre of the circle.</p>
  
  <p>I use the following python code for testing:</p>
  
  <pre><code>import numpy as np
  import cartopy.crs as ccrs
  import cartopy.feature as cfeature
  import matplotlib.pyplot as plt
  import matplotlib.patches as mpatches
  
  # example: draw circle with 45 degree radius around the North pole
  lon = 0
  lat = 90
  r = 45
  
  # find map ranges (with 5 degree margin)
  minLon = lon - r - 5
  maxLon = lon + r + 5
  minLat = lat - r - 5
  maxLat = lat + r + 5
  
  # define image properties
  width = 800
  height = 800
  dpi = 96
  resolution = '50m'
  
  # create figure
  fig = plt.figure(figsize=(width / dpi, height / dpi), dpi=dpi)
  ax = fig.add_subplot(1, 1, 1, projection=ccrs.Orthographic(central_longitude=lon, central_latitude=lat))
  ax.set_extent([minLon, maxLon, minLat, maxLat])
  ax.imshow(np.tile(np.array([[cfeature.COLORS['water'] * 255]], dtype=np.uint8), [2, 2, 1]), origin='upper', transform=ccrs.PlateCarree(), extent=[-180, 180, -180, 180])
  ax.add_feature(cfeature.NaturalEarthFeature('physical', 'land', resolution, edgecolor='black', facecolor=cfeature.COLORS['land']))
  ax.add_feature(cfeature.NaturalEarthFeature('cultural', 'admin_0_countries', resolution, edgecolor='black', facecolor='none'))
  ax.add_feature(cfeature.NaturalEarthFeature('physical', 'lakes', resolution, edgecolor='none', facecolor=cfeature.COLORS['water']), alpha=0.5)
  ax.add_feature(cfeature.NaturalEarthFeature('physical', 'rivers_lake_centerlines', resolution, edgecolor=cfeature.COLORS['water'], facecolor='none'))
  ax.add_feature(cfeature.NaturalEarthFeature('cultural', 'admin_1_states_provinces_lines', resolution, edgecolor='gray', facecolor='none'))
  ax.add_patch(mpatches.Circle(xy=[lon, lat], radius=r, color='red', alpha=0.3, transform=ccrs.PlateCarree(), zorder=30))
  fig.tight_layout()
  plt.savefig('CircleTest.png', dpi=dpi)
  
  plt.show()
  </code></pre>
  
  <p>I get a correct result at the equator (set <code>lat</code> to 0 in example above):
  <a href="https://i.stack.imgur.com/IdpVD.png" rel="noreferrer"><img src="https://i.stack.imgur.com/IdpVD.png" alt="Example at Equator"></a></p>
  
  <p>But when I move towards a pole the shape is distorted (<code>lat = 45</code>):
  <a href="https://i.stack.imgur.com/7b4Yy.png" rel="noreferrer"><img src="https://i.stack.imgur.com/7b4Yy.png" alt="Example at 45 degrees"></a></p>
  
  <p>At the pole I only see one quarter of the circle:
  <a href="https://i.stack.imgur.com/oEJHe.png" rel="noreferrer"><img src="https://i.stack.imgur.com/oEJHe.png" alt="Example at Pole"></a></p>
  
  <p>I would expect to always see a perfect circle in orthographic projection, if the view is centred correctly. I also tried to use a different transform in the <code>add_patch</code> method, but then the circle completely vanishes!</p>