如何平滑一组3D点?

3
这个问题是我之前的一个问题的延伸,你可以在这里找到:如何在Python中绘制数据立方体
问题在于,我有一个点的三维图,但如果按照以前的方法,当要绘制的点过多时,就会出现溢出错误。我必须绘制数百万个点,所以我需要平滑三维分布,否则制作绘图需要很长时间,还可能会出现内存错误。
我想也许可以用高斯核来卷积分布,但我不知道这是否是最佳选择。此外,我还不知道该如何实现。

我认为答案取决于你认为最重要的信息是什么。根据你更愿意丢失哪些信息,有不同的选择。 - user e to the power of 2pi
我对这个点的空间分布平均值很感兴趣。 - Brian
首先:如果您有数百万个数据点,您是否能够看到超出立方体边缘的部分?换句话说,三维可视化是否是最佳选择,或者制作2D切片可能会更好?此外:您可以构建一个三维数组,填充每个单元格中的平均值或中位数,以此来进一步处理数据。 - Daan
是的,你说得对,我为2D可视化做了这个,但我想看到数据立方体。 - Brian
你能否举个例子,展示一下你所偏爱的解决方案是什么样子?比如说,你可以画一个纸笔草图来描述你理想中的图形。或者你的问题只是想要在尽量不损失信息的情况下减少数据点的数量?那么提供一份数据样本会很有帮助:这些点是聚集在一起还是均匀分布的?函数值在 (x,y,z) 处是随机变化还是平滑分布的?等等,等等。 - Daan
不,我的观点并不均匀分布。我想要像这样的东西http://blogs.discovermagazine.com/badastronomy/files/2007/darkmatter_blobs.jpg - Brian
1个回答

0

正如我在原问题中回答的那样,Dots 绘图对您来说是不错的选择。它是由 MathGL -- GPL 绘图库生成的。如果您将其保存为位图格式(PNG、JPEG、GIF 等),则不需要太多内存。

然而,平滑本身还有另一个选项: (i) 制作点分布的直方图(即在某些单元格内平均点值或颜色)-- 在 MathGL 框架中,您甚至可以使用 Hist() 函数处理 3D 空间中的点;或者 (ii) 使用标准平滑函数(例如 MathGL 中的 mglData::Smooth()),但这里需要使用常规数组,即 {x[i,j,k]、y[i,j,k]、z[i,j,k]、c[i,j,k]}。

这两种变体都会给您提供规则数组,可以通过一组不同的方式进行绘制 -- 参见这些 示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接