2017-08-27 153 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

添加一個包含一些代碼的最小工作示例,以便它對未來的訪問者更有用* –