Fațetare (facets)

Procesul de fațetare (facets) presupune divizarea unei figuri în subfiguri determinate de valorile unei variabile categoriale sau a mai multor variabile categoriale. Astfel, în cazul în care vorbim de o singură variabilă, pentru fiecare categorie a variabilei este trasat un subgrafic. Pachetul ggplot2 pune la dispoziție două funcții utile pentru a efectua această operație:

  • facet_wrap() - folosită atunci când avem de-a face cu o singură variabilă de grupare a datelor
  • facet_grid() - folosită atunci când dorim secționarea datelor după două sau mai multe variabile

Spre exemplu, setul de date gapminder_2018 conține informații referitoare la produsul intern brut ajustat (gdpPerCap) și speranța medie de viață (lifeExp) pentru mai mult de 180 de țări de pe patru continente (continents). Dacă dorim să vedem relația dintre cele două variabile în funcție de continent atunci una dintre variante ar fi să folosi estetica colour pentru a diferenția. O variantă alternativă, care uneori ilustrează mai clar diferențele, este de a subsecționa graficul în subgrafice ce corespund fiecărui continent folosind funcția facet_grid().

ggplot(gapminder_2018, aes(x = gdpPerCap, y = lifeExp, colour = continent)) +
  geom_point()

ggplot(gapminder_2018, aes(x = gdpPerCap, y = lifeExp)) +
  geom_point() + 
  facet_grid(.~continent)

Figura 1: Exemplu de utilizare a funcției facet_grid() folosind o singură variabilă.

În Figura 1 de mai sus am folosit facet_grid pentru a separa în subgrafice chiar dacă separarea s-a făcut în funcție de o singură variabilă (continent). Observăm că în apelarea funcției facet_grid (?facet_grid) am folosit simbolul ~ care separă variabila/variabilele din stânga (trasată/trasate de-a lungul liniilor) de cea/cele din dreapta (trasată/trasate pe coloane). Codul generic pentru funcția facet_grid este

facet_grid([factor pentru linii] ~ [factor pentru coloane])

Pentru ilustrare să considerăm că ne dorim să investigăm relația dintre gdpPerCap și lifeExp în funcție de regiunea și nivelul de venit stabilite de Banca Mondială (variabilele wb_region și respectiv wb_income).

Figura 2: Exemplu de utilizare a funcției facet_grid() folosind două variabile.

Funcția facet_wrap() este folosită cu precădere atunci când dorim secționarea datelor după o singură variabilă calitativă (dar poate fi folosită și cu mai multe - ?facet_wrap). Prin aplicarea acestei funcții, subgraficele corespunzătoare fiecărui nivel al variabilei de separare nu trebuie să fie repartizate pe o singură linie sau coloană în schimb se poate specifica numărul de coloane (sau de linii) dorite. Codul generic pentru funcția facet_wrap este

facet_wrap( ~ [variabila de fatetare],
             ncol = [numar de coloane])

Vom ilustra aplicarea acestei funcții în contextul setului de date gapminder_all. Vom afișa cum a evoluat evoluția duratei medii de viață pentru patru țări (Statele Unite, UK, Franța și România) după Cel de-al Doilea Război Mondial:

Figura 3: Exemplu de utilizare a funcției facet_wrap() cu opțiunea ncol=2.

În Figura 4 de mai jos ilustrăm evoluția produsului intern brut pentru statele din Asia de Est după anul 1950. Opțiunea ncol descrie numărul de coloane în care vrem să fie împărțit grid-ul de subgrafice iar opțiunea scales = "free_y" permite ajustarea scalei pentru axa y pentru fiecare categorie (țară) în parte.

Figura 4: Exemplu de utilizare a funcției facet_wrap() cu opțiunea scales="free_y".