Streudiagramm mit Dichte in Matlab
-
21-12-2019 - |
Frage
Ich möchte Datensatz 1 und Datensatz 2 in einer vertikalen Darstellung darstellen.Leider sind die Daten sehr umfangreich, es handelt sich also nur um einen verwischten Punkt und die Dichte lässt sich nicht erkennen.Ich habe hist3 und andere Vorschläge ausprobiert, aber es überschreibt meine Datensätze und das Binning sieht schrecklich aus.
Gibt es eine andere Möglichkeit, Streudichtediagramme zu zeichnen?Gibt es wirklich keine Matlab-Funktion dafür?Wenn nicht, welches Programm könnte ich verwenden, um eine solche Darstellung einfach zu erstellen?
Eine Mischung aus diesen beiden Beispielen:
(Quelle: bcgsc.ca)
Lösung
Dank an @Emil Albert für eine Korrektur (eine Transponierung fehlte)
Was ist falsch am Rechnen? hist3
und Anzeigen des Ergebnisses mit imagesc
?
data1 = randn(1,1e5); %// example data
data2 = randn(1,1e5) + .5*data1 ; %// example data correlated to above
values = hist3([data1(:) data2(:)],[51 51]);
imagesc(values.')
colorbar
axis equal
axis xy
Wenn du haben willst die Achsen entsprechend den wahren Datenwerten:Verwenden Sie die zweite Ausgabe von hist3
um die Positionen der Bin-Mittelpunkte zu ermitteln und diese an weiterzuleiten imagesc
:
data1 = randn(1,1e5); %// example data
data2 = 2*randn(1,1e5) + 1.2*data1 + 4; %// example data correlated to above
[values, centers] = hist3([data1(:) data2(:)],[51 51]);
imagesc(centers{:}, values.')
colorbar
axis xy
Andere Tipps
probieren Sie es mit Violin Plot Einreichung zum Dateiaustausch.Es ist sehr anpassbar.Ich benutze es die ganze Zeit.Danke an @jonas.