2017-08-27 155 views
2

我有一个三维数据集,我用散点图进行了可视化。这是它的样子:Python或MATLAB中的4D热图

This is how it looks like

我现在想颜色取决于数据的密度不同点。有没有什么办法可以在Python或MATLAB中做到这一点?另一种选择是根据数据点中有多少数据点来对数据进行分类和颜色设置。我通过使用Python的histogramdd函数来分类数据。

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

的想法是有它看起来有点像这样:使用此线程提供的代码

this

3D discrete heatmap in matplotlib

如果您有任何想法,我怎么可能做到这一点,我会很高兴听到他们!

+0

散点图本身(scatter3在MATLAB)可以采用的参数的大小来确定每个散点的另一个参数,以及确定颜色的另一个参数。 –

+0

有关2D示例,请参阅https://stackoverflow.com/a/38557802/4183191; 3D例子是相同的;只是为第三维添加另一个参数。如果你喜欢方块,你也可以为你的点选择一个形状。 –

+0

是的,谢谢你,我虽然对此有所了解,但是如何获得单个数据点的数据密度以确定它们的颜色? – Viviane

回答

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)

+0

添加一个包含一些代码的最小工作示例,以便它对未来的访问者更有用* –