ggplot2 este pachetul de vizualizare de date preferat de profesioniștii în R. Pe baza sa a fost creat și un pachet numit ggplot pentru Python. Numele său vine de la „Grammar of Graphics”, un concept introdus de Leland Wilkinson în 1999, concept pe care se bazează și acest pachet.

ggplot2 pare complicat inclusiv pentru cei care cunosc deja noțiuni de scripting și vizualizare de date în R, pentru că are o logică diferită. Mai jos, voi explica simplu cele mai importante noțiuni și cum poți începe să îți creezi grafice pe baza propriilor date.

Elementele Gramaticii Graficelor

Gramatica graficelor este un framework potrivit căruia grafica este formată din layere distincte de elemente gramatice.

ggplot2 folosește aceleași elemente descrise în „Grammar of Graphics”. Acestea sunt:

  • Datele – setul de date folosit pentru vizualizare
  • Estetica – scale pe baza cărora creăm vizualizarea
  • Geometria – elementele vizuale folosite pentru a reprezenta datele
  • Fațetele – pentru vizualizări cu mai multe grafice create odată
  • Statistica – elementele statistice adăugate pentru mai multe informații
  • Coordonatele – spațiul în care creăm geometria
  • Temele – toate elementele grafice care nu se bazează pe date

Primele trei din listă, adică datele, estetica și geometria, sunt considerate elemente esențiale, așa că le voi lua pe rând.

Datele

Putem importa date dintr-un fișier sau direct din instrumentul de analytics. În cazul acesta, vom folosi pachetul cu care obținem datele din Google Analytics. Primul pas este să încărcăm acest pachet, precum și ggplot2, pachete pe care le vom folosi în continuare:

library(googleAnalyticsR)

library(ggplot2)

Urmează login-ul în contul Google și extragerea datelor din analytics:

ga_auth()

ga <- google_analytics(viewId = "12345",

     date_range = c("2017-01-01", "2017-12-31"),

     metrics = "users",

     dimensions = c("date", "userType"),

     anti_sample = TRUE)

Așadar, acum avem datele pe care le vom folosi în continuare în grafice. Am extras date despre utilizatori în anul 2017, segmentate în funcție de tipul utilizatorilor (New / Returning). Nu uitați să schimbați View ID-ul cu cel din propriul cont de analytics!

Am scris un articol separat despre importarea datelor din Google Analytics în R. Funcția google_analytics înlocuiește google_analytics_4, folosită în versiunile anterioare de googleAnalyticsR pentru a extrage date din Google Analytics API v4.

Estetica

Scriam mai sus că este layer-ul în care definim scalele pentru vizualizare. Poate fi vorba de scale precum x și y, dar și de culori, marimi, transparență, etichete, poziții etc.

În ggplot2, acestea apar ca atribute, cel mai des pentru funcția aes(), dar nu numai. Sunt folosite scale pentru a transforma informațiile în detalii estetice în grafic. Vom vedea mai jos exemple.

Geometria

Se referă la modul în care reprezentăm datele. Sunt zeci de elemente geometrice din care putem alege, de la puncte și linii la hexagoane și poligoane neregulate. Desigur, se pot crea și combunații între acestea.

Haideți să vedem un exemplu din combinațiile de până acum:

ggplot(ga, aes(x = date, y=users, color=userType)) + 
     geom_point(alpha=0.5) + geom_smooth(se = FALSE)

Avem ggplot, funția principală din pachetul de vizualizare a datelor. Începem cu datele, în cazul nostru numite ga anterior (când le-am importat). Urmează estetica, cu argumentul aes(), în cadrul cărora am definit afișarea datelor calendaristice pe scala x, a utlizatorilor pe scala y și colorarea lor în funcție de tipul de utilizator (New / Returning).

După date și estetică avem, bineînțeles, geometria, pentru care am ales să afișeze două elemente. Primul este geom_point pentru punctele care indică numărul utilizatorilor. Acel alpha indică o transparență, aleasă în acest caz la 50%. Al doilea element grafic este geom_smooth și trasează linii pentru tendințe. Pentru a nu încărca graficul, am ales să nu afișeze și intervalul de confidențialitate, prin argumentul setat ca fals.

Rezultatul funcției de mai sus:

Am putea spune ca avem un grafic standard pentru ggplot2. Observăm leganda pusă automat, pentru că nu am specificat altceva.

Unul dintre avantajele ggplot2 este flexibilitatea. Putem face rapid modificări într-un vizualizările de date. Următoarea fucție pentru crearea unei vizualizări este asemănătoare cu cea anterioară:

ggplot(ga, aes(x = date, y=users, col=userType)) + geom_point(alpha=0.5) +

     geom_smooth() + facet_grid(. ~ userType) +

     theme(panel.background = element_blank(),

     axis.text = element_blank(), legend.position="none",

     axis.title=element_blank(), axis.ticks=element_blank())

Datele, estetica și geometriile sunt aceleași. OK, avem o mică schimbare la geom_smooth, pentru că acum am lăsat și intervalele de confidențialitate, dar este singura schimbare până aici. Mai departe, am adăugat un layer nou prin facet_grid pentru a introduce fațetarea pe coloane, adică 2 grafice diferite, pentru New și Returning Visitors.

În final, am introdus și un layer theme() pentru elemente grafice care nu reprezintă date. Aici am decis să șterg fundalul, legenda, titlul axelor și chiar axele, pentru că știm deja aceste informații. Rezultatul este vizualizarea de la începutul articolului (deasupra titlului). Tema poate fi salvată pentru a putea fi folosită ulterior fără a mai defini fiecare element în parte. De altfel, marile organizații folosesc câtetemă proprie la care apelează toți analiștii interni când au de creat vizualizări de date.

De fiecare dată când scriu un articol de genul acesta prefer să țin lucrurile cât mai simple cu putință. ggplot2 este mult mai complex, cu o mulțime de opțiuni estetice și multe alte tipuri de grafice. Există înclusiv opțiuni pentru crearea de hărți și de animații. Acolo unde nu este suficient ce oferă ggplot2, avem la dispoziție și extensii pentru acesta, adică alte pachete care extind tipurile de grafice posibile, temele, hărțile, animațiile etc. Despre acestea, într-un articol viitor.

Tags: , , ,