Visualizing large number of points as a 3D density map

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

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!

Topic visualization

Category Data Science


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.

Dimensions@densityClouds
{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;
Dimensions@densityClouds
{3, 68921, 4}

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

ListDensityPlot3D[Last@densityClouds,
 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.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.