4

我有一个 3D 数据集,我用散点图对其进行可视化。这是它的样子:

这是它的样子

我现在想根据数据的密度为不同的点着色。有什么办法可以在 Python 或 MATLAB 中做到这一点?另一种选择可能是对数据进行分箱并根据其中有多少数据点为分箱着色。我使用 Python 的histogramdd函数对数据进行了分箱。

H,edges = np.histogramdd(al,bins=(16,16,16))

我们的想法是让它看起来像这样:

这个

使用此线程中提供的代码:matplotlib 中的 3D离散热图

如果您对我如何做到这一点有任何想法,我会很高兴听到他们的声音!

4

1 回答 1

0

谢谢大家的想法。不幸的是,使用 hist3 fundtion 不起作用,因为我有 3 个维度,而 hist3 只需要两个变量并将直方图值计算为第三个。我现在的解决方案是为每个数据点计算一定半径内的点数。然后我使用这些值用 scatter3(x,y,z,2,c) 为我的绘图着色

c=zeros(size(x));
for i=1:length(x)
  j=1:length(x);
  j(i)=[];
  s = sort((x(j)-x(i)).^2+(y(j)-y(i)).^2+(d(j)-d(i)).^2);
  c(i)=sum(s<2);
end
scatter3(d,x,y,2,c)

于 2017-08-27T16:22:40.210 回答