title: Clockwise polar plot with 0 deg at the top
body: <p>How can I make a clockwise polar plot? Somebody ask a similar question <a href="https://stackoverflow.com/questions/2417794/how-to-make-the-angles-in-a-matplotlib-polar-plot-go-clockwise-with-0-at-the-top">here</a>: <a href="https://stackoverflow.com/questions/2417794/how-to-make-the-angles-in-a-matplotlib-polar-plot-go-clockwise-with-0-at-the-top">How to make the angles in a matplotlib polar plot go clockwise with 0&#176; at the top?</a>, But I don't understand this:</p>
  <pre><code>import matplotlib.pyplot as plt
  import numpy as np
  
  fig = plt.figure()
  ax = fig.add_subplot(111, polar=True)
  ax.grid(True)
  
  theta = np.arange(0,370,10)
  theta = [i*np.pi/180.0 for i in theta]  # convert to radians
  
  x = [3.00001,3,3,3,3,3,3,3,3,3,3,3,3,3,2.5,2,2,2,2,2,1.5,1.5,1,1.5,2,2,2.5,2.5,3,3,3,3,3,3,3,3,3]
  ax.plot(theta, x)
  plt.show()
  </code></pre>
  <p>EDIT:</p>
  <pre><code>import matplotlib.pyplot as plt
  import numpy as np
  from matplotlib.projections import PolarAxes, register_projection
  from matplotlib.transforms import Affine2D, Bbox, IdentityTransform
  
  class NorthPolarAxes(PolarAxes):
      '''
      A variant of PolarAxes where theta starts pointing north and goes
      clockwise.
      '''
      name = 'northpolar'
  
      class NorthPolarTransform(PolarAxes.PolarTransform):
          def transform(self, tr):
              xy   = np.zeros(tr.shape, np.float_)
              t    = tr[:, 0:1]
              r    = tr[:, 1:2]
              x    = xy[:, 0:1]
              y    = xy[:, 1:2]
              x[:] = r * np.sin(t)
              y[:] = r * np.cos(t)
              return xy
  
          transform_non_affine = transform
  
          def inverted(self):
              return NorthPolarAxes.InvertedNorthPolarTransform()
  
      class InvertedNorthPolarTransform(PolarAxes.InvertedPolarTransform):
          def transform(self, xy):
              x = xy[:, 0:1]
              y = xy[:, 1:]
              r = np.sqrt(x*x + y*y)
  
  fig = plt.figure()
  register_projection(NorthPolarAxes)
  ax=plt.subplot(1, 1, 1, projection='northpolar')    
  theta=np.linspace(0,2*np.pi,37)
  x = [3.00001,3,3,3,3,3,3,3,3,3,3,3,3,3,2.5,2,2,2,2,
       2,1.5,1.5,1,1.5,2,2,2.5,2.5,3,3,3,3,3,3,3,3,3]
  ax.plot(theta, x)
  plt.show()
  </code></pre>
  <p>How to use <code>register_projection(NorthPolarAxes)</code> correctly?</p>