Roje pszczół zamiast chmur punktów
Przy większej liczbie obserwacji wykresy punktowe bywają nieczytelne. Losowe przesuwanie punktów (geom_point(position = “jitter”)) w ggplot2 nie wygląda zbyt estetycznie, poza tym punkty cały czas mogą na siebie nachodzić. Prostym rozwiązaniem jest zastosowanie pakietu ggbeeswarm, który zawiera kilka geometrii tworzących estetyczne i informatywne wykresy punktowe.
Funkcjonalność pakietu beeswarm najlepiej zaprezentować na przykładzie - w tym przypadku dochodzie netto mieszkańców dużych miast (powyżej 500 tys. mieszkanców) w województwach Mazowieckim i Dolnośląskim.
library(dplyr)
library(haven)
library(ggplot2)
library(ggbeeswarm)
# Skąd wziąć dane z diagnozy? Sprawdź tutaj:
# https://stwur.github.io/STWUR//articles/przygotowania/
load("./Diagnoza_dane-master/osoby.RData")
dochod_df <- data.frame(woj = as_factor(osoby[[74]]),
dochod = osoby[[646]],
miasto = osoby[[75]]) %>%
# wybieramy tylko osoby ktore maja podane informacje na temat dochodu i województwa
filter(!(is.na(woj) | is.na(dochod))) %>%
# tylko osoby o dochodzie kodowanym zmiennymi większymi niż 0
filter(dochod > 0) %>%
mutate(dochod = as.numeric(dochod)) %>%
# tylko interesujące nas województwa
filter(woj %in% c("Dolnośląskie", "Mazowieckie")) %>%
# tylko największe miasta
filter(miasto == 1)
# wykresy pudełkowe w tym przypadku nam nie wystarczają, chcemy zobaczyć poszczególne punkty
ggplot(dochod_df, aes(x = woj, y = dochod)) +
geom_boxplot()
# przy zwykłym wykresie punkty nachodzą na siebie
ggplot(dochod_df, aes(x = woj, y = dochod)) +
geom_point()
# losowe umiejscowienie punktów jest mało informatywne, punkty wciąż czasami nachodzą na siebie
ggplot(dochod_df, aes(x = woj, y = dochod)) +
geom_point(position = "jitter")
# pseudolosowe umiejscowienie punktów jest dużo bardziej przejrzyste
ggplot(dochod_df, aes(x = woj, y = dochod)) +
geom_quasirandom()
# rój pszczół to alternatywny sposób pseudolosowego umiejscowienia punktów
ggplot(dochod_df, aes(x = woj, y = dochod)) +
geom_beeswarm()