Ich versuche zwei Variablen mit N = 700K zu zeichnen. Das Problem ist, dass es zu viele Überlappungen gibt, so dass die Darstellung meist zu einem festen schwarzen Block wird. Gibt es eine Möglichkeit, eine Graustufen- "Wolke" zu haben, bei der die Dunkelheit des Diagramms von der Anzahl der Punkte in einer Region abhängt? Mit anderen Worten, anstatt einzelne Punkte anzuzeigen, möchte ich, dass das Diagramm eine "Wolke" ist. Je mehr Punkte in einer Region vorhanden sind, desto dunkler ist diese Region.
r
scatter-plot
user702432
quelle
quelle
Antworten:
Eine Möglichkeit, damit umzugehen, ist das Alpha-Blending, wodurch jeder Punkt leicht transparent wird. So erscheinen Regionen dunkler, auf denen mehr Punkte eingezeichnet sind.
Dies ist einfach zu tun in
ggplot2
:Ein weiterer bequemer Weg, um damit umzugehen, ist (und wahrscheinlich besser geeignet für die Anzahl der Punkte, die Sie haben) das hexagonale Binning:
Und es gibt auch regelmäßige alte rechteckige Binning (Bild weggelassen), die eher Ihrer traditionellen Heatmap ähneln:
quelle
scale_fill_gradient()
und spezifizieren Sie Ihre eigenen niedrigen und hohen Farben oder verwendenscale_fill_brewer()
Sie eine der aufeinander folgenden Paletten und wählen Sie sie aus.geom_point()
jeden einzelnen Punkt verwenden und zeichnen.Sie können sich auch das
ggsubplot
Paket ansehen . Dieses Paket implementiert Funktionen, die Hadley Wickham bereits 2011 vorgestellt hat ( http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html ).(Im Folgenden füge ich zur Veranschaulichung die "Punkte" -Schicht hinzu.)
Dies funktioniert jedoch, wenn Sie eine dritte Variable steuern müssen.
Oder ein anderer Ansatz wäre
smoothScatter()
:quelle
Eine Übersicht über einige gute Optionen in
ggplot2
:Option A: transparente Punkte
Option B: Dichtekonturen hinzufügen
Option C: Konturen mit gefüllter Dichte hinzufügen
Option D: Dichte-Heatmap
Option E: Hexbins
Option F: Teppiche
Kombinieren Sie in einer Figur:
quelle
Alpha-Blending ist auch mit Basisgrafiken einfach durchzuführen.
Die ersten sechs Zahlen nach
#
sind die Farbe in RGB hex und die letzten beiden sind die Deckkraft, wiederum in hex, also 33 ~ 3/16 undurchsichtig.quelle
Sie können auch Dichtekonturlinien (
ggplot2
) verwenden:Oder kombinieren Sie Dichtekonturen mit Alpha-Blending:
quelle
Möglicherweise finden Sie das
hexbin
Paket nützlich . Von der Hilfeseite vonhexbinplot
:quelle
geom_pointdenisty
Mit demggpointdensity
Paket (kürzlich von Lukas Kremer und Simon Anders (2019) entwickelt) können Sie Dichte und einzelne Datenpunkte gleichzeitig visualisieren:quelle
Meine bevorzugte Methode zum Zeichnen dieser Art von Daten ist die in dieser Frage beschriebene - ein Streudichtediagramm . Die Idee ist, ein Streudiagramm zu erstellen, aber die Punkte nach ihrer Dichte zu färben (grob gesagt, das Ausmaß der Überlappung in diesem Bereich).
Es gleichzeitig:
Hier ist das Ergebnis der Top-Antwort auf die verknüpfte Frage:
quelle
R
.