The result of my computational simulation is a (time-dependent) system of large number (~100k) of moving points in a confined space. Each point has its own Cartesian coordinates as well as a weight (w) in the form of $(x_i,y_i,z_i;w_i)$.

I'm looking for a software/app/package to create a snapshot of the 3D spatial density map of these points. (something like this).

enter image description here

Like you see in this figure, the points are not going to be displayed individually, but only a transparent cloud will be drawn whose local intensity is proportional with the local number of points.

The final goal is to create a movie of the changing 3D spatial density with time.

So far, I have tried R, Matlab, Origin, and ImageJ. But no success!


In Wolfram Language you may use ListDensityPlot3D.

First we create some data to plot using a 3D density function at three time points (0, .5, and 1) using Table.

p[t_, x_, y_, z_] := Cos[t z] + x y
densityClouds = Table[{x, y, z, p[t, x, y, z]},
   {t, 0, 1, .5}, {x, -1, 1, .05}, {y, -1, 1, .05}, {z, π/2, 3 π/2, π/40}];

densityClouds contains the 3 clouds but it is not the correct format for ListDensityPlot3D.

{3, 41, 41, 41, 4}

We can Flatten the two upper layers of each cloud (the x and y coordinates) to the third layer (the z coordinate) to get the correct format.

densityClouds = Flatten[#, 2] & /@ densityClouds;
{3, 68921, 4}

That we have data we can just plot the one of the clouds. The Last cloud is t = 1.

 PlotLegends -> Automatic,
 AxesLabel -> {"x", "y", "z"}]

enter image description here

You may find other list 3D plots in the Data Visualization guide useful (like ListContourPlot3D) and their 3D equivalents in the Function Visualization guide (like DensityPlot3D).

Hope this helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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