Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

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).

share|improve this question
add comment

4 Answers 4

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]

enter image description here

share|improve this answer
add comment

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] &)]

enter image description here

share|improve this answer
add comment

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]

enter image description here

BR

share|improve this answer
add comment

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]

Mathematica graphics

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.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.