# Coloring surfaces in plot3d

I'm really new with sage, and what I would like is to color a graph from plot3d according to some function (specifically, I would want the hue to vary with the magnitude of the gradient). Is there some way of doing this easily?

edit retag close merge delete

Sort by » oldest newest most voted Something like that is now possible as follows.

var('x,y,z')
cm = colormaps.winter
f = sin(2*z).function(x,y,z)
implicit_plot3d(x^2-y^2*z == 0,(x,-4,4),(y,-4,4),(z,-4,4), color=(f,cm))


where cm is a chosen colormap among those available. Beware that the coloring function f must takes values between 0 and 1.

more

Yes and no. There is basic functionality for colormaps, as described on the question about coloring by z-level. Sage's colormaps come from matplotlib, and you can define your own colormap functions in matplotlib. Here is the documentation for matplotlib colormaps.

But I don't know if Sage's interface to matplotlib has been extended to all the functionality of matplotlib (probably not). Perhaps you'll need to import matplotlib and use it's plotting functionality directly . . .

It should be possible, but may require learning more about matplotlib and how to use it. Good luck!

more