将大量点可视化为 3D 密度图

数据挖掘 可视化
2021-09-21 08:17:14

我的计算模拟的结果是一个在有限空间内有大量(~100k)移动点的(时间相关的)系统。每个点都有自己的笛卡尔坐标以及权重 (w),形式为(xi,yi,zi;wi).

我正在寻找一个软件/应用程序/包来创建这些点的 3D 空间密度图的快照。像这样的东西)。

在此处输入图像描述

就像你在这个图中看到的那样,这些点不会单独显示,而只会绘制一个透明的云,其局部强度与局部点数成正比。

最终目标是制作一部 3D 空间密度随时间变化的电影。

到目前为止,我已经尝试过 R、Matlab、Origin 和 ImageJ。但是没有成功!

1个回答

Wolfram 语言中,您可以使用ListDensityPlot3D.

首先,我们使用 3D 密度函数在三个时间点(0、0.5 和 1)创建一些数据以进行绘图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包含 3 朵云,但它不是ListDensityPlot3D.

Dimensions@densityClouds
{3, 41, 41, 41, 4}

我们可以Flatten将每个云的上两层(x 和 y 坐标)到第三层(z 坐标)来得到正确的格式。

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

我们有数据,我们可以绘制其中的一朵云。Lastt = 1

ListDensityPlot3D[Last@densityClouds,
 PlotLegends -> Automatic,
 AxesLabel -> {"x", "y", "z"}]

在此处输入图像描述

您可能会在数据可视化指南中找到其他有用的 3D 图列表(如),在函数可视化ListContourPlot3D指南中找到它们的 3D 等效物(如)。DensityPlot3D

希望这可以帮助。