# level/contour curves in 3D Is there a way to graph level curves of a function $f(x,y)$ in 3D at their respective heights? (Much like contourplot3d in Maple.) Thanks.

To make things clearer: what I'd like to see is a 3D plot with level curves (not surfaces). We start with a function of 2 variables (not three) and I'd like to see the 'exploded' contour plot so that the level curves are graphed at their respective z-altitudes. Makes sense?

edit retag close merge delete

Sort by » oldest newest most voted

Below is a bit of a hack, but I think it does what you want.

var('x,y,z')
f(x,y)=x^2+3*y^2
levels=[1,2,3,4]
epsilon=0.1
p=plot3d(f(x,y),(x,-2,2),(y,-2,2),color='khaki',opacity=0.7)
for h in levels:
p+=implicit_plot3d(f(x,y)==h,(x,-2,2),(y,-2,2),(z,h,h+epsilon))

show(p) more

1

Small variation: var('x,y,z') sum([implicit_plot3d(x^2-y^2==level,(x,-4,4),(y,-4,4),(z,level,level+0.1)) for level in srange(-10,10,2)])

Thanks for the solution, though, like you said, it's a little bit of a hack.

You can use contour_plot and can specify the heights you want as follows.

var('x,y')
contour_plot(x^3+x*y,(x,-4,4),(y,-4,4),contours=[0,1,2,3])


For a 3D version, see 3D contours.

more

Indeed, what I'd like to see is a 3D plot with level curves (**not surfaces**). We start with a function of 2 variables (**not three**) and I'd like to see the 'exploded' contour plot so that the level curves are graphed at their respective $z$-altitudes. Makes sense?

One can use gnuplot (in Sage)

   sage: gnuplot_console()
#and then
set contour surface
set cntrparam levels incremental -10,2,10
unset surface
set isosamples 100,100
splot [-4:4] [-4:4] [-11:11] x**2-y**2

more

Thanks, that looks interesting but I would rather avoid having to use gnuplot.