how to rotate a 3D surface in matplotlib
<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>