Visualisierung von Streudiagrammen mit überlappenden Punkten in Matplotlib

8

Ich muss ungefähr 30.000 Punkte in einem Streudiagramm in Matplotlib darstellen. Diese Punkte gehören zu zwei verschiedenen Klassen, deshalb möchte ich sie mit verschiedenen Farben darstellen.

Das ist mir gelungen, aber es gibt ein Problem. Die Punkte überschneiden sich in vielen Regionen und die Klasse, für die ich zuletzt dargestellt habe, wird über der anderen dargestellt und versteckt. Außerdem ist es mit dem Streudiagramm nicht möglich zu zeigen, wie viele Punkte in jeder Region liegen. Ich habe auch versucht, ein 2D-Histogramm mit histogram2d und imshow zu erstellen, aber es ist schwierig, die Punkte beider Klassen klar darzustellen.

Können Sie einen Weg vorschlagen, um sowohl die Verteilung der Klassen als auch die Konzentration der Punkte deutlich zu machen?

EDIT: Um klarer zu sein, das ist die verlinken zu meiner Datendatei im Format "x, y, class"

    
markusian 28.09.2013, 08:02
quelle

2 Antworten

13

Ein Ansatz besteht darin, die Daten als Streudiagramm mit einem niedrigen Alpha darzustellen, so dass Sie die einzelnen Punkte sowie ein ungefähres Maß für die Dichte sehen können. (Der Nachteil ist, dass der Ansatz einen begrenzten Überlappungsbereich aufweist, d. H. Eine maximale Dichte von etwa 1 / Alpha.)

Hier ist ein Beispiel:

Wie Sie sich vorstellen können, gibt es aufgrund des begrenzten Bereichs von Überlappungen, die ausgedrückt werden können, einen Kompromiss zwischen der Sichtbarkeit der einzelnen Punkte und dem Ausdruck der Überlappungsmenge (und der Größe der Markierung, des Plots usw.) / p> %Vor%

(Ich nehme an, hier meinst du 30e3 Punkte, nicht 30e6. Für 30e6 denke ich, dass eine Art von gemittelter Dichtekurve notwendig wäre.)

    
tom10 28.09.2013, 15:22
quelle
7

Sie können die Punkte auch einfärben, indem Sie zuerst eine Schätzung der Kerndichte für die Verteilung der Streuung berechnen und die Dichtewerte verwenden, um für jeden Punkt der Streuung eine Farbe anzugeben. Um den Code im vorherigen Beispiel zu ändern:

%Vor%

Ich habe diesen Trick vor einiger Zeit gelernt, als ich die Dokumentation der Streufunktion bemerkte -

%Vor%
  

c kann eine einzelne Farbformatzeichenfolge oder eine Sequenz von Farbspezifikationen der Länge N oder eine Sequenz von N -Zahlen sein, die mit den über% angegebenen cmap und norm den Farben zugeordnet werden Kwargs (siehe unten). Beachten Sie, dass c keine einzelne numerische RGB- oder RGBA-Sequenz sein darf, da diese nicht von einem Array von Werten unterschieden werden kann, die farbzugewandt werden sollen. c kann ein 2D-Array sein, in dem die Zeilen RGB oder RGBA sind, jedoch einschließlich der Groß- / Kleinschreibung einer einzelnen Zeile, um für alle Punkte dieselbe Farbe anzugeben.

    
vishakad 18.05.2016 12:10
quelle