Ajustarea pozițiilor (position adjustments)

Fiecare strat geometric geom prezintă, pe lângă o transformare statistică implicită, și o ajustare implicită a poziției care specifică un set de reguli privind modul în care componentele diferite ale graficului trebuie poziționate unele față de altele. Această poziționare implicită este vizibilă în special în cadrul funcției geom_bar atunci când aplicăm o variabilă diferită caracteristicii vizuale de colorare (e.g. colour sau fill).

De exemplu, să considerăm diagrama cu bare care ilustrează numărul de țări de pe fiecare continent folosind setul de date gapminder_2018. Putem colora barele folosind sau estetica colour sau estetica fill (de preferat).

gapminder_2018 %>% 
  ggplot() +
  geom_bar(aes(x = continent, colour = continent)) 

gapminder_2018 %>% 
  ggplot() +
  geom_bar(aes(x = continent, fill = continent)) 

Figura 1: Exemplu de poziționare implicită în cadrul funcției geom_bar.

Acum dacă colorăm diagrama cu bare de mai sus în raport cu nivelul de venit (conform Băncii Mondiale) obținem o diagramă cu bare suprapuse colorate în funcție de această variabilă.

Figura 2: Exemplu de diagramă cu bare cu bare suprapuse.

Suprapunerea barelor (stack) în geom_bar (înălțimea dreptunghiurilor este proporțională cu valoarea lor) se face în mod automat prin ajustarea poziției specificate de argumentul position (default position = "stack"). Dacă nu se dorește suprapunerea barelor atunci se poate folosi una din următoarele ajustări: identity, dodge sau fill.

  • position = "identity" - opțiunea impune plasarea fiecărui obiect exact unde se află în contextul figurii (nu este foarte folositoare atunci când trasăm diagrame cu bare dar este opțiunea de default pentru diagramele de împrăștiere)

gapminder_2018 %>% 
  ggplot(aes(x = continent, colour = wb_income)) +
  geom_bar(position = "identity", fill = NA)

Figura 3: Exemplu de diagramă cu bare cu opțiunile position = "stack" și respectiv position = "identity".

  • position = "fill" - opțiunea este similară cu stack, suprapunând barele în așa fel încât înălțimea acestora să fie constantă (este de preferat atunci când dorim să comparăm proporții între grupuri)

Figura 4: Exemplu de diagramă cu bare cu argumentul position = "fill".

  • position = "dodge" - opțiunea plasează obiectele unul lângă celălalt și permite astfel o mai bună comparare între valorile individuale

Figura 5: Exemplu de diagramă cu bare cu argumentul position = "dodge".

Trebuie menționat că geom_boxplot are ca și poziționare implicită poziționarea dodge după cum se poate observa și din exemplul de mai jos.

Figura 6: Poziționarea implicită în diagrama boxplot.

Tipurile de poziții prezentate mai sus se aplică în special diagramelor cu bare (sau boxplot-urilor) dar, trebuie menționat că pachetul ggplot2 pune la dispoziție și trei metode de ajustare a pozițiilor în cazul punctelor: position_nudge() - asigură mutarea punctelor printr-o valoare fixată (default în cazul geom_text()); position_jitter() - adaugă poziției fiecărui punct un zgomot aleator pentru a dispersa un pic datele; position_jitterdodge() - permite separarea/evitarea (dodge) puntelor în interiorul grupurilor și apoi adaugă zgomot aleator pozițiilor.

Vom ilustra primele două ajustări de poziții în contextul setului de date gapminder_all în care afișăm pentru anii 1989, 2000 și 2018 speranța medie de viață pentru fiecare țară.

# initial
gapminder_all %>% 
  filter(year %in% c("1989", "2000", "2018")) %>%
  ggplot(aes(x = year, y = lifeExp)) +
  geom_point()

# position nundge
gapminder_all %>% 
  filter(year %in% c("1989", "2000", "2018")) %>%
  ggplot(aes(x = year, y = lifeExp)) +
  geom_point(position = position_nudge(x = 0.25, y = 0))

# position jitter - default
gapminder_all %>% 
  filter(year %in% c("1989", "2000", "2018")) %>%
  ggplot(aes(x = year, y = lifeExp)) +
  geom_point(position = "jitter")

#position jitter - cu specificatii
gapminder_all %>% 
  filter(year %in% c("1989", "2000", "2018")) %>%
  ggplot(aes(x = year, y = lifeExp)) +
  geom_point(position = position_jitter(width = 0.05, height = 0.5))

Figura 7: Exemple de poziționare în diagramele de împrăștiere.

Pentru mai multe informații referitoare la tipurile de ajustare a pozițiilor în obiectele grafice din ggplot2 se poate consulta documentația fiecărei funcții geom sau se poate apela comanda

help.search("position_", package = "ggplot2")