Demystiling GEOM_BAR () – modul în care GGPLOT2 contează și transformă automat datele

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe codificare-pastși a contribuit cu drag la R-Bloggers). (Puteți raporta problema despre conținutul de pe această pagină aici)


Doriți să vă împărtășiți conținutul pe R-Bloggers? Faceți clic aici dacă aveți un blog sau aici dacă nu.

GGPLOT2 este un pachet puternic și binecunoscut de vizualizare a datelor pentru R., dar știi ce GG înseamnă? Se referă de fapt la Gramatica graficăUn cadru conceptual pentru înțelegerea și construirea graficelor. Ideea de bază din spatele gramaticii graficelor este că un complot este format din mai multe straturi.

Cele mai cunoscute straturi sunt Geometrii – Formele geometrice care reprezintă date într -un complot – și mapări esteticecare conectează datele la proprietăți vizuale specifice. Un strat mai puțin cunoscut, dar la fel de important, este strat statisticcare transformă datele originale pentru a permite anumite tipuri de parcele. Acest lucru poate părea complex la început, dar este de fapt destul de intuitiv. În această lecție, vom explora cum geom_bar() aplică o transformare statistică pentru a face parcelele de bare mai simple și mai simple.

1. Cum funcționează în mod implicit Geom_Bar?

Primul pas este încărcarea datelor folosind read_tsv()o funcție din readr Pachet folosit pentru a citi Valori separate de file. Vardicția de verdict ne spune concluzia anchetei, care ar putea fi, de exemplu, că moartea a fost un omucidere sau un sinucidere. Pentru a simplifica analiza noastră, unificăm „sinuciderea (delirantă)”, „sinucidere (fel de se)” și „sinucidere (nebună)” într -o singură categorie: „sinucidere”. De asemenea, filtram observațiile în care lipsește verdictul sau sexul.

content_copy
Copie

library(readr)
library(dplyr)
library(ggplot2)

df <- read_tsv("wa_coroners_inquests_v1-1.tsv")

df_prep <- df %>% 
  filter(verdict != "-") %>% 
  filter(gender %in% c("m", "f")) %>% 
  mutate(verdict = recode(verdict, "suicide (delirious)" = "suicide",
                          "suicide (felo de se)" = "suicide",
                          "suicide (insane)" = "suicide"))

Fiecare rând de df_prep Conține date despre investigarea unui deces, inclusiv data, sexul și verdictul. Am dori să avem o primă privire de ansamblu despre verdictele pentru a determina câte decese au fost clasificate ca omucidere, sinucidere, accidentală, etc. Comportamentul implicit al Geom_bar face foarte ușor vizualizarea acestor informații:

content_copy
Copie

theme_set(theme_bw()) # chooses a lighter ggplot2 theme: theme_bw()

ggplot(data = df_prep)+
    geom_bar(aes(x=verdict))

GEOM_BAR PLOT

De ce funcționează acest lucru dacă am mapat o variabilă categorică la X? Unde primește GGPLOT2 numărul pentru fiecare cauză de deces? Ei bine, fiecare geometrie din GGPLOT2 are o transformare statistică implicită asociată care spune GGPLOT dacă ar trebui să ia în considerare datele de intrare brută sau dacă ar trebui să transforme mai întâi setul de date și apoi să le comploteze. În cazul geom_bar, statul implicit este „număr”. Aceasta înseamnă că GGPLOT va crea un al doilea date de date cu valorile verdictului și frecvența/numărul lor respectiv, așa cum se arată în figura de mai jos.

Transformare statistică în GGPLOT2Transformare statistică în GGPLOT2

După cum puteți vedea, GGPLOT2 face acest lucru pentru tine. Dar dacă datele dvs. au fost deja transformate? În acest caz, trebuie să setați explicit geom_bar(aes(x=verdict, y = count), stat = "identity"). Dacă STAT este setat pe „identitate”, atunci GGPLOT ia datele de intrare brute și nu efectuează nicio transformare. În acest caz, rețineți că un X și Y sunt necesare.

TIPS_AND_UPDATES

Puteți utiliza comanda `layer_data (complot = last_plot (), i = 1L)` Pentru a verifica datele GGPLOT transformate pentru dvs. Utilizați această comandă după comanda de complot. Acesta va obține datele transformate din ultimul complot, în ceea ce privește I = 1L, sau primul strat al complotului nostru (geom_bar în acest caz).


2. Cum să reordonați geom_bar?

O îmbunătățire pe care o putem face la complotul nostru este să reordonați verdictele, astfel încât cea mai frecventă să vină primul. Acest lucru se poate face cu ajutorul pachetului Forcats. Una dintre funcțiile sale, fct_infreq()reordonează o variabilă bazată pe frecvența valorilor sale (cea mai mare primă).

content_copy
Copie

ggplot(data = df_prep)+
    geom_bar(aes(x=fct_infreq(verdict)))

Reordonare geom_barReordonare geom_bar


3.. Stivuit și procent stivuit Geom_bar

Imaginează -ți acum că ai dori să investighezi cum se compară verdictele între sexe, subliniind cazurile care implică persoane de sex feminin. Acest lucru poate fi obținut cu ușurință prin cartografierea genului până la estetica completă. Rezultatul este de două bare una peste alta, una referindu -se la bărbați și altele la femei.

În codul de mai jos, facem și complotul nostru mai atractiv vizual prin schimbarea culorilor, a titlului legendei și a etichetelor. Mai mult, reglăm etichetele axei.

content_copy
Copie

ggplot(data = df_prep)+
    geom_bar(aes(x=fct_infreq(verdict), fill = gender))+
    scale_fill_manual(name = "", values = c("#f79326", "gray"), labels = c("Female", "Male"))+
    labs(x = "", y = "Number of Cases")

Geom_bar stivuitGeom_bar stivuit

Graficul de bare stivuite de mai sus rezultă din implicit position = "stack" configurație. Pentru a vizualiza mai bine distribuția cazurilor feminine și masculine pentru fiecare cauză de deces (verdict), putem afișa procentele în loc de număr absolut. Această abordare face mai ușor să se vadă în ce femele din categoria verdictului au o proporție mai mare. Pentru a realiza acest lucru, trebuie să schimbați poziția în position = "fill" în geom_bar ().

content_copy
Copie

ggplot(data = df_prep)+
    geom_bar(aes(x=fct_infreq(verdict), fill = gender), position = "fill")+
    scale_fill_manual(name = "", values = c("#f79326", "gray"), labels = c("Female", "Male"))+
    labs(x = "", y = "Percentage")

Procentul a stivuit geom_barProcentul a stivuit geom_bar

Acum este mai clar că, printre toate cauzele morții, omucidele au cea mai mare proporție de femei. Mai mult, cel mai mic procent de cazuri de sex feminin corespunde deceselor accidentale.


4. Utilizați stat_bin pentru a grupa observații până la dată

Examinând în continuare datele, doriți să studiați cum a evoluat proporția de cazuri de suicid în rândul femeilor în timp. O modalitate de a face acest lucru este prin filtrarea doar a verdictelor de sinucidere și vizualizarea proporției de cazuri de sinucidere feminină de -a lungul timpului. Deoarece avem date care se întind pe mai mulți ani, este o idee bună să le grupăm în pubele și să numărăm cazurile în fiecare perioadă. Acest lucru se poate face folosind stat_bin (), care funcționează similar cu geom_bar (), dar grupează datele în pubele.

Deoarece setul nostru de date se află într -un format ordonat – în care fiecare rând reprezintă un singur caz – putem număra numărul de apariții într -un coș specific pentru a determina câte cazuri se încadrează în fiecare interval de timp. De aceea, am setat X la DOC_DATE, data anchetei. În plus, putem specifica numărul de pubele setând o valoare pentru parametrul BINS. În codul de mai jos, stabilim pubele = 10. De asemenea, setăm color = „alb” pentru a crea borduri albe în jurul barelor. În afară de aceste modificări, codul rămâne același ca în exemplul geom_bar () de mai sus.

content_copy
Copie

ggplot(data = df_prep_2)+
    stat_bin(aes(x=doc_date, fill = gender), 
             position = "fill", 
             bins = 10, 
             color = "white")+
    scale_fill_manual(name = "", values = c("#f79326", "gray"), labels = c("Female", "Male"))+
    labs(x = "", y = "Percentage")

Procentul a stivuit geom_bar pentru cazuri de sinucidereProcentul a stivuit geom_bar pentru cazuri de sinucidere

Graficul prezintă o ușoară tendință în scădere a proporției de cazuri de sinucidere feminină între 1760 și 1800. De asemenea, evidențiază faptul că, pe întreaga perioadă, bărbații au reprezentat cel puțin 60% din cazurile de suicid.

Mi -ar plăcea să aud orice feedback sau sugestii pentru îmbunătățirea parcelelor de mai sus. Simțiți -vă liber să vă împărtășiți gândurile sau să puneți întrebări în comentariile de mai jos! Codificare fericită!


  • geom_bar și stat_bin sunt instrumente puternice pentru a înfățișa frecvențele subgrupurilor din datele dvs .;
  • Geom_bar stat şi position Parametrii permit utilizatorilor să comploteze mai multe tipuri de bare, transformând Geom_bar într -un instrument de vizualizare versatil.

** Aș dori să mulțumesc lui June Choe pentru această explicație strălucitoare despre stat_layers în GGPLOT2. De asemenea, mulțumim mult lui Sharon Howard pentru pregătirea acestui set de date instigant și pentru punerea la dispoziție a acestuia.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.