Mathematica Plotting 3D Function with Color Saturation in Mathematica

AI Thread Summary
To plot a 3D function in Mathematica with color saturation based on a given function S = f(x, y, z), the discussion emphasizes using ColorFunction to achieve the desired effect. The participants suggest using RGBColor to define colors, with maximum values represented as saturated red and minimum values as white. A key point raised is the challenge of visualizing data when using fully opaque colors, which could obscure internal details. The conversation also touches on the use of spheres or cubes at each coordinate to represent data points and the importance of incorporating an alpha channel for transparency. Overall, the discussion provides insights into visualizing complex data in 3D while managing color saturation and transparency effectively.
rohanprabhu
Messages
410
Reaction score
2
I want to plot a function in 3D such that the saturation of the color at any point is given by:

<br /> S = f(x, y, z)<br />

so, when f(x, y, z) is maximum, i want the color at (x, y, z) to be say saturated Red [rgb(255, 255, 0)] and when it is minimum, i want the color to be white.

How do i do that in Mathematica?
 
Physics news on Phys.org
Are you talking about a surface in 3D colored? Or more like a density plot, say random particles.

If its the first:

F[x_, y_] = x/Exp[x^2 + y^2];
Plot3D[F[x, y], {x, -2, 2}, {y, -2, 2},
ColorFunction -> Function[{x, y, z}, RGBColor[1, 1 - z, 1 - z]]]

Sort of does what you ask.
 
Well.. in the example you gave, the function represents a set of points which satisfy a given condition. However, i want that each and every point is assigned a color, based on the co-ordinates of the point. How do i do that?
 
So you mean like a 3D density plot. If it drew a pixel at every coordinate, how would you see anything behind the front face of the data? Or are you looking for something like, at certain points its transparent and at others its not?

Because if its fully opaque you'll only see the bounds of the plot and no data inside. Even so I'll try to do it. I'm thinking your best approach (since there's no such thing as DensityPlot3D) is to have it draw a sphere or cube at each coordinate and color accordingly.

I've done something like this before when trying to make graphics for some 3D Crystalline grain growth simulations. Its a pain and I ended up making my own stuff using OpenDX (which I don't really recommend, its difficult).

so I guess let me ask you this, is your data a function of coordinates, or a table of datapoints?
 
K.J.Healey said:
So you mean like a 3D density plot. If it drew a pixel at every coordinate, how would you see anything behind the front face of the data? Or are you looking for something like, at certain points its transparent and at others its not?

Because if its fully opaque you'll only see the bounds of the plot and no data inside. Even so I'll try to do it. I'm thinking your best approach (since there's no such thing as DensityPlot3D) is to have it draw a sphere or cube at each coordinate and color accordingly.

I've done something like this before when trying to make graphics for some 3D Crystalline grain growth simulations. Its a pain and I ended up making my own stuff using OpenDX (which I don't really recommend, its difficult).

so I guess let me ask you this, is your data a function of coordinates, or a table of datapoints?

What I want to do is visualize the behavior of a Spherical Wave. The color at each point should give me the value of the.. let's say Electric Field if it is an EM Wave. Something like:

<br /> X = X_o Sin[k\sqrt{x^2 + y^2 + z^2} + \omega t]<br />

and i want 't' to be manipulated by the parameter supplied through Animate[] rather than Manipulate[], but that's a different thing. Also, in the above case, the greater 'X' is.. the more opaque i want the color to be.
 
Yeah, that's basically a 3D density plot. I'll keep looking at it, but remember that what you're talking about isn't saturation, its the alpha channel.
The function Hue[h,s,b,a] the last channel is the alpha.
Maybe there's soemthing you can do in the plot where ColorFunction-> something with Hue[50,50,50,F[x,y,z]] or something.
 
Or do something like this:
(Where Alph is the function describing the transparency coordinates as a function of xyz)

F[x_, y_] = x/Exp[x^2 + y^2];
Alph[x_, y_, z_] = z; (*Anything here*)
Plot3D[F[x, y], {x, -2, 2}, {y, -2, 2},
ColorFunction ->
Function[{x, y, z}, RGBColor[1, 0, 0, Alph[x, y, z]]]]
 

Similar threads

Replies
1
Views
2K
Replies
4
Views
2K
Replies
5
Views
2K
Replies
1
Views
2K
Replies
4
Views
1K
Replies
8
Views
2K
Back
Top