2017-08-27 4 views
2

Ich habe ein 3D-Dataset, das ich mit einem Streudiagramm visualisieren. Dies ist, wie es aussieht:4D Heatmap in Python oder MATLAB

This is how it looks like

ich nun die verschiedenen Punkte auf der Dichte der Daten abhängig färben möchte. Gibt es eine Möglichkeit, dies in Python oder MATLAB zu tun? Eine andere Option könnte darin bestehen, die Daten zu sortieren und die Bins zu färben, abhängig davon, wie viele Datenpunkte in ihnen liegen. Ich habe die Daten mithilfe der Python-Funktion histogramdd zusammengefasst.

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

Die Idee ist es, wie diese Art von aussehen zu haben:

this

die in diesem Thread bereitgestellt Code verwendet: 3D discrete heatmap in matplotlib

Wenn Sie irgendwelche Ideen, wie habe ich konnte tue dies, ich wäre wirklich glücklich, sie zu hören!

+0

Scatterplot selbst (scatter3 in Matlab) kann ein Argument, um die Größe zu bestimmen, von jedem Streupunkt und ein anderes Argument, um die Farbe zu bestimmen. –

+0

siehe https://StackOverflow.com/a/38557802/4183191 für ein 2D-Beispiel; das 3D-Beispiel ist identisch; fügen Sie einfach ein weiteres Argument für die 3. Dimension hinzu. Sie können auch eine Form für Ihre Punkte wählen, wenn Sie Quadrate bevorzugen. –

+0

Ja danke, das habe ich aber dran, aber wie bekomme ich die Dichte der Daten für die einzelnen Datenpunkte, um ihre Farbe zu bestimmen? – Viviane

Antwort

0

Vielen Dank für Ihre Ideen. Die Verwendung der hist3-Fundtion funktioniert leider nicht, da ich 3 Dimensionen habe und hist3 nur zwei Variablen nimmt und die Histogrammwerte als dritte berechnet. Meine Lösung ist jetzt, für jeden Datenpunkt die Anzahl der Punkte zu berechnen, die in einem bestimmten Radius liegen. Dann verwende ich diese Werte mein Stückes mit scatter3 an Farbe (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

fügen Sie ein minimales Arbeitsbeispiel mit etwas Code, so dass es * mehr * nützlich für die zukünftigen Besucher wäre –