title: how to rotate a 3D surface in matplotlib
body: <p>I have written code to plot a 3D surface of a parabaloid in matplotlib.</p>
  
  <p>How would I rotate the figure so that the figure remains in place (i.e. no vertical or horizontal shifts) however it rotates around the line y = 0 and z = 0 through an angle of theta ( I have highlighted the line about which the figure should rotate in green). Here is an illustration to help visualize what I am describing:
  <a href="https://i.stack.imgur.com/9oUae.png" rel="noreferrer"><img src="https://i.stack.imgur.com/9oUae.png" alt="enter image description here"></a></p>
  
  <p>For example, If the figure were rotated about the line through an angle of 180 degrees then this would result in the figure being flipped 'upside down' so that the point at the origin would be now be the maximum point.</p>
  
  <p>I would also like to rotate the axis so that the colormap is maintained.
  Here is the code for drawing the figure:</p>
  
  <pre><code>#parabaloid
  import numpy as np
  from matplotlib import pyplot as plt
  from mpl_toolkits.mplot3d import Axes3D
  
  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')
  
  #creating grid
  y = np.linspace(-1,1,1000)
  x = np.linspace(-1,1,1000)
  x,y = np.meshgrid(x,y)
  
  #set z values
  z = x**2+y**2
  
  #label axes
  ax.set_xlabel('x')
  ax.set_ylabel('y')
  ax.set_zlabel('z')
  
  
  #plot figure
  ax.plot_surface(x,y,z,linewidth=0, antialiased=False, shade = True, alpha = 0.5)
  
  plt.show()
  </code></pre>