I'm trying to plot a function of the form $z(r,\theta)$ where $r \in [0, R]$ for a finite R, $\theta \in [0,2\pi[$, and z is the third coordinate, a function of the first two. I couldn't find anything to do it natively, so I went back to Cartesian coordinates. But the result does not satisfy me, because the range of x is a function of y, a consequence of the constraint $ x^2+y^2 < R^2$. Is there already something in Mathematica to handle this kind of plot?
Asked
Active
Viewed 2.5k times
20
2 Answers
31
Do it parametrically. Here's a generic implementation:
cylinderPlot3D[f_, {rMin_, rMax_}, {tMin_, tMax_}, opts___] :=
ParametricPlot3D[{r Cos[t], r Sin[t], f[r, t]}, {r, rMin, rMax}, {t, tMin, tMax}, opts]
For example,
f[r_, t_] := r^2 Cos[3 t];
cylinderPlot3D[f, {0, 1}, {0, 2 Pi}, Mesh->None, Boxed->False]

Mark Adler
- 4,949
- 1
- 22
- 37
whuber
- 20,544
- 2
- 59
- 111
RevolutionPlot3Dwhen $z$ does vary with $\theta$? – whuber Feb 05 '13 at 16:26RevolutionPlot[]for the purpose. Witness for instanceRevolutionPlot3D[r^2 Cos[3 t], {r, 0, 1}, {t, 0, 3 π/2}]. Of course, it's more enlightening to useParametricPlot3D[]instead, as in your answer. – J. M.'s missing motivation Feb 07 '13 at 03:12