我的计算模拟的结果是一个在有限空间内有大量(~100k)移动点的(时间相关的)系统。每个点都有自己的笛卡尔坐标以及权重 (w),形式为.
我正在寻找一个软件/应用程序/包来创建这些点的 3D 空间密度图的快照。(像这样的东西)。
就像你在这个图中看到的那样,这些点不会单独显示,而只会绘制一个透明的云,其局部强度与局部点数成正比。
最终目标是制作一部 3D 空间密度随时间变化的电影。
到目前为止,我已经尝试过 R、Matlab、Origin 和 ImageJ。但是没有成功!
我的计算模拟的结果是一个在有限空间内有大量(~100k)移动点的(时间相关的)系统。每个点都有自己的笛卡尔坐标以及权重 (w),形式为.
我正在寻找一个软件/应用程序/包来创建这些点的 3D 空间密度图的快照。(像这样的东西)。
就像你在这个图中看到的那样,这些点不会单独显示,而只会绘制一个透明的云,其局部强度与局部点数成正比。
最终目标是制作一部 3D 空间密度随时间变化的电影。
到目前为止,我已经尝试过 R、Matlab、Origin 和 ImageJ。但是没有成功!
在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}
我们有数据,我们可以绘制其中的一朵云。云Last是t = 1。
ListDensityPlot3D[Last@densityClouds,
PlotLegends -> Automatic,
AxesLabel -> {"x", "y", "z"}]
您可能会在数据可视化指南中找到其他有用的 3D 图列表(如),在函数可视化ListContourPlot3D指南中找到它们的 3D 等效物(如)。DensityPlot3D
希望这可以帮助。