Próbuję wykreślić dwie zmienne, gdzie N = 700K. Problem polega na tym, że nakładanie się jest zbyt duże, więc działka staje się przeważnie jednolitym blokiem czerni. Czy istnieje sposób na stworzenie „chmury” w skali szarości, w której ciemność wykresu jest funkcją liczby punktów w regionie? Innymi słowy, zamiast pokazywać poszczególne punkty, chcę, aby wykres był „chmurą”, przy czym im większa liczba punktów w regionie, tym ciemniejszy jest ten region.
r
scatter-plot
user702432
źródło
źródło
Odpowiedzi:
Jednym ze sposobów rozwiązania tego problemu jest mieszanie alfa, które sprawia, że każdy punkt jest lekko przezroczysty. Zatem regiony wydają się ciemniejsze, na których naniesiono więcej punktów.
Można to łatwo zrobić w
ggplot2
:Innym wygodnym sposobem radzenia sobie z tym jest (i prawdopodobnie bardziej odpowiedni do liczby posiadanych punktów) jest binowanie heksagonalne:
Istnieje również zwykły stary binning prostokątny (obraz pominięty), który bardziej przypomina tradycyjną mapę cieplną:
źródło
scale_fill_gradient()
i określ własne niskie i wysokie kolory lub użyjscale_fill_brewer()
i wybierz jedną z kolejnych palet.geom_point()
i wykreślić każdy punkt.Możesz też rzucić okiem na
ggsubplot
opakowanie. Ten pakiet zawiera funkcje, które zostały zaprezentowane przez Hadleya Wickhama w 2011 roku ( http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html ).(W dalszej części dołączam warstwę „punktów” dla celów ilustracyjnych).
Jednak ta funkcja oferuje skały, jeśli masz trzecią zmienną do kontrolowania.
Lub innym podejściem byłoby użycie
smoothScatter()
:źródło
Przegląd kilku dobrych opcji w
ggplot2
:Opcja A: przezroczyste punkty
Opcja B: dodaj kontury gęstości
Opcja C: dodaj wypełnione kontury gęstości
Opcja D: mapa cieplna gęstości
Opcja E: hexbins
Opcja F: dywaniki
Połącz w jedną figurę:
źródło
Mieszanie alfa jest łatwe również w przypadku grafiki podstawowej.
Sześć pierwszych cyfr po znaku
#
to kolor w zapisie szesnastkowym RGB, a ostatnie dwie to krycie, ponownie w formacie szesnastkowym, czyli 33 ~ 3/16 nieprzezroczystości.źródło
Możesz również użyć linii konturów gęstości (
ggplot2
):Lub połącz kontury gęstości z mieszaniem alfa:
źródło
hexbin
Pakiet może okazać się przydatny . Ze strony pomocyhexbinplot
:źródło
geom_pointdenisty
zggpointdensity
pakietu (ostatnio opracowanego przez Lukasa Kremera i Simona Andersa (2019)) umożliwia jednoczesną wizualizację gęstości i poszczególnych punktów danych:źródło
Moją ulubioną metodą wykreślania tego typu danych jest ta opisana w tym pytaniu - wykres gęstości rozproszenia . Chodzi o to, aby wykonać wykres punktowy, ale pokolorować punkty według ich gęstości (z grubsza mówiąc, stopień nakładania się w tym obszarze).
Jednocześnie:
Oto wynik najwyższej odpowiedzi na pytanie, do którego prowadzi łącze:
źródło
R
.