title: Set matplotlib view to be normal to the x-y plane in Python
body: <p>This code found <a href="http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html" rel="noreferrer">here</a> is an example of a 3d surface plot:</p>
  
  <pre><code>from mpl_toolkits.mplot3d import Axes3D
  from matplotlib import cm
  from matplotlib.ticker import LinearLocator, FormatStrFormatter
  import matplotlib.pyplot as plt
  import numpy as np
  
  fig = plt.figure()
  ax = fig.gca(projection='3d')
  X = np.arange(-5, 5, 0.25)
  Y = np.arange(-5, 5, 0.25)
  X, Y = np.meshgrid(X, Y)
  R = np.sqrt(X**2 + Y**2)
  Z = np.sin(R)
  surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
          linewidth=0, antialiased=False)
  ax.set_zlim(-1.01, 1.01)
  
  ax.zaxis.set_major_locator(LinearLocator(10))
  ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
  
  fig.colorbar(surf, shrink=0.5, aspect=5)
  
  plt.show()
  </code></pre>
  
  <p>and yields</p>
  
  <p><a href="https://i.stack.imgur.com/moDYH.png" rel="noreferrer"><img src="https://i.stack.imgur.com/moDYH.png" alt="enter image description here"></a></p>
  
  <p>Is there a way to set the plot view so that it is perfectly normal to the x-y axis? This basically turns the 3-d plot into a 2-d one, where you can use the colourmap to judge the magnitude of the z-variable, rather than its displacement from the z=0 datum.</p>