如何平滑一组3D点?
这个问题是我之前提问的延伸,你可以在这里找到之前的问题:
我的情况是,我有一个三维的点图,但是如果我按照之前的方法来做,当要绘制的点太多时,可能会出现溢出错误。因为我需要绘制数百万个点,所以我需要对三维分布进行平滑处理,否则绘图会花费大量时间,而且可能还会出现内存错误。
我在想,也许我可以用高斯核来对分布进行卷积,但我不知道这是否是最好的选择。而且,我现在还不会这样做。
1 个回答
0
正如我在原问题中提到的,Dots 图表非常适合你。它是由MathGL这个开源绘图库生成的。使用位图格式(比如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]}。
这两种方法都会生成规则的数组,你可以用不同的方式来绘制它们——可以查看这些示例。