title: Plotting a 3D Cylindrical Surface plot in Python
body: <p>I am trying to create a cylindrical 3D surface plot using Python, where my independent variables are <code>z</code> and <code>theta</code>, and the dependent variable is <code>radius</code> (i.e., <code>radius</code> is a function of vertical position and azimuth angle).
  So far, I have only been able to find ways to create a 3D surface plot that:</p>
  
  <ul>
  <li><p>has <code>z</code> as a function of <code>r</code> and <code>theta</code></p></li>
  <li><p>has <code>r</code> as a function of <code>z</code>, but does not change with <code>theta</code> (so, the end product looks like a revolved contour; for example, the case of <code>r = sin(z) + 1</code> ).</p></li>
  </ul>
  
  <p>I would like to have <code>r</code> as a function of <code>z</code> <strong>and</strong> <code>theta</code>, because my function will produce a shape that, at any given height, will be a complex function of <code>theta</code>.
  On top of that, I need the surface plot be able to have (but does <strong>not</strong> have to have, depending on the properties of the function) an open top or bottom. For example, if <code>r</code> is constant from <code>z = 0</code> to <code>z = 1</code> (a perfect cylinder), I would want a surface plot that would only consist of the side of the cylinder, not the top or bottom. The plot should look like a hollow shell.</p>
  
  <p>I already have the function <code>r</code> defined.</p>
  
  <p>Thanks for any help!</p>