# How can I fill a curve in ParametricPlot3D?

I'd like to fill a curve in a ParametricPlot3D in the same way as I might with ListPointPlot3D; i.e.,

ListPointPlot3D[data, ColorFunction -> "Rainbow", Filling -> Bottom]


I obtained the data numerically, point-by-point, with MATLAB. I have found a parametric expression for $y$ ($y = f(x)$) and I have a function $F(x, y, z)$, but I want to plot $F$ only for the curve $y = f(x)$, i.e., the 3D surface is defined as

Plot3D[x^2 Sin[x] + y^2 Cos[y] - x y, {x, 0, 1}, {y, 0, 1}]


and I want to plot only the specific line of surface which satisfy $y = f(x) = x^2$ using

ParametricPlot3D[{x, x^2, x^2 Sin[x] + y^2 Cos[y] - x y /. y -> x^2}, {x, 0, 1}]


I'd like to add a filling, but I don't know how. When I type Filling ->, the Mathematica code editor complains (the text becomes red).

Why don't you just use ListPointPlot3D

ListPointPlot3D[
Table[{x, x^2, x^2 Sin[x] + y^2 Cos[y] - x y /. y -> x^2}, {x, 0, 1,
0.001}], ColorFunction -> "Rainbow", Filling -> Bottom]


You can use the two-parameter version of ParametricPlot3D:

  ParametricPlot3D[{x, x^2, v ( x^2 Sin[x] + (x^4) Cos[x^2] - x^3)}, {x, 0, 1}, {v, 0, 1},
Mesh -> None, PlotStyle -> Opacity[.9], ColorFunction -> (Hue[#2] &)]


Using Show is definitely one option to achieve what you want.

Show[ParametricPlot3D[{x, x^2,x^2 Sin[x] + y^2 Cos[y] - x y /. y -> x^2}, {x, 0, 1},
Mesh -> False,
ColorFunction -> "DarkRainbow",
PlotStyle -> Directive[Thick, Opacity[.8]]],
ListPointPlot3D[Table[{x, x^2, x^2 Sin[x] + y^2 Cos[y] - x y /. y -> x^2},
{x, 0, 1, .002}],
PlotStyle -> PointSize[Tiny],
ColorFunction -> "Rainbow",
Filling -> Bottom],
Boxed -> False]


BR

You could fake a parametric plot if you want to keep the Filling functionality by using a RegionFunction that constrains y to "something close" to x^2:

Plot3D[x^2 Sin[x] + y^2 Cos[y] - x y, {x, 0, 1}, {y, 0, 1},
RegionFunction -> Function[{x, y, z}, x^2 < y < x^2 + .01],
PlotPoints -> 80,
Filling -> Axis,
FillingStyle -> Automatic]


you may want to tweak the threshold 0.01 in the RegionFunction, to scale with the PlotPoints. The way it is now defined, it will look poor for less PlotPoints. This is quite an inelegant solution compared to the suggestion to plot filling and curve separately.

• I used $x-0.005 < y < x+0.005$ for a similar display.
– Carl
Feb 11, 2018 at 15:04