Representacions gràfiques

En aquesta secció combinarem funcions dels paquets dplyr i ggplot2 per representar gràficament la distribució d’una o més variables de el marc de dades gapminder.

library(ggplot2)
library(dplyr)
library(gapminder)

Per poder fer aquestes representacions, haurem d’estar suficientment familiaritzats amb la gramàtica de ggplot2, ja que en les pàgines següents aplicarem diverses de les geometries que ofereix el paquet. Segons el tipus de variable que vulguem representar utilitzarem les següents formes de representació gràfica:

Histograma

Amb l’histograma visualitzem amb barres verticals la distribució dels valors de una variable numèrica.

  • A l’eix de les x, cada barra representa un interval de valors.
  • A l’eix de les y, l’alçada de la barra correspon a el nombre de casos que es troben en cada interval.
  • Amb R, representarem aquesta figura amb la funció geom_histogram().
gapminder %>%
  filter(year == 1992) %>%
  ggplot(aes(x = gdpPercap)) +
  geom_histogram() +
  theme_bw()

Variants de l’histograma:

  • Podeu canviar el nombre d’intervals amb l’argument bins dins de la funció de l’histograma, per exemple amb geom_histogram(bins = 20) visualitzarem 20 intervals.
  • També podeu fer el mateix procediment amb l’argument binwidth, per exemple amb geom_histogram(binwidth = 3000) indiquem que cada un dels intervals ens representi 3.000 dòlars per càpita.
  • Si en lloc de visualitzar el nombre de freqüències en l’eix vertical preferiu visualitzar els percentatges podeu fer servir geom_histogram(aes(y = ..density..)). Recordeu d’introduir la funció d’estètics.
  • Indicarem el color amb l’argument fill, per exemple geom_histogram(fill = "dark blue").
  • També podem fer servir el color com un estètic, indicant omplir les barres segons una variable categòrica, per exemple fill = continent:
gapminder %>%
  ggplot(aes(x = lifeExp, fill = continent)) +
  geom_histogram(position = "stack") +
  theme_classic()

Diagrama de densitat: l’alternativa a l’histograma

El diagrama de densitat és similar a l’histograma, però en lloc de columnes ens resumeix la distribució de la variable numèrica mitjançant una àrea. Proveu els codis següents:

gapminder %>% 
  ggplot(aes(x = lifeExp)) + 
  geom_density(fill = "seagreen2", bw = 1) #color taronja

gapminder %>% 
  ggplot(aes(x = lifeExp, fill = continent)) + #color segons continent
  geom_density(alpha = 0.4) #apliquem transparència

gapminder %>% 
  filter(year %in% c(1962, 1977, 1992, 2007)) %>%  #utilitzem  4 anys
  ggplot(aes(x = lifeExp, fill = factor(year))) + #color segons any
  geom_density(alpha = 0.4, bw = 5) #apliquem transparència

gapminder %>% filter(year %in% c(1962, 1977, 1992, 2007)) %>% #utilitzem només 4 anys
  ggplot(aes(x = lifeExp, fill = factor(year))) + #color segons any
  geom_density(bw = 5) + 
  facet_wrap(~ year) #creem facet

Diagrama de línies

El diagrama de línies s’utilitza normalment per a visualitzar la tendència d’una variable numèrica en el temps.

  • A l’eix de les x situarem la variable temporal (numèrica)
  • A l’eix de les y situarem la variable numèrica que volem veure la seva evolució.
  • Amb R, representarem aquesta figura geomètrica amb la funció geom_line().

En el codi següent, resumim la mitjana de l’esperança de vida mundial agrupada per any i tot seguit demanem un diagrama de línies amb diversos atributs (color, mida, tipus de línia).

gapminder %>%
  group_by(year) %>%
  summarize(mean_lifeExp = mean(lifeExp)) %>%
  ggplot(aes(x = year, y = mean_lifeExp)) +
  geom_line(col = "dark green", size = 1.2, lty = 5)

En el següent gràfic hem filtrat el marc de dades per cinc països i afegit un color per a cada línia en els estètics.

gapminder %>%
  filter(country %in% c("Cambodia", "Germany", "China", "Angola", "Rwanda")) %>%
  ggplot(aes(x = year, y = lifeExp, col = country)) +
  geom_line(size = 1.2)

Diagrama de barres

El diagrama de barres representa els valors d’una variable categòrica (a diferència de l’histograma, que com ja sabem representa els valors d’una variable numèrica). Hi ha dues maneres de representar un diagrama de barres.

  1. Si volem saber quantes observacions hi ha a cada categoria d’una variable categòrica:
  • A l’eix de les x indicarem una variable categòrica.
  • No hem d’indicar res a l’eix de les y. L’alçada de les barres representarà el nombre de freqüències de cada categoria de la variable categòrica que hem indicat en l’eix horitzontal.
  • En aquest cas, farem servir geom_bar().
ggplot(gapminder, aes(x = continent)) +
  geom_bar()
  1. Si volem saber la suma dels valors d’una variable numèrica per cada categoria d’una variable categòrica:
  • Indicarem la variable categòrica a l’eix de les x.
  • Indicarem la variable numèrica a l’eix de les y.
  • En aquest cas, representarem el diagrama amb la geom_col().
gapminder %>%
  group_by(continent) %>%
  summarize(m_gdpCap = mean(gdpPercap)) %>%
  ggplot(aes(x = continent, y = m_gdpCap, fill = continent)) +
  geom_col(show.legend = FALSE)

Amb coord_flip() podem canviar les coordenades. És un procediment útil quan tenim un nombre elevat de categories a l’eix de les x.

gapminder %>%
  filter(year == 2007, country %in% c("Australia", "Botswana", "Namibia", "Jamaica", 
                                      "Peru", "United Kingdom", "Venezuela", "Vietnam")) %>%
  arrange(desc(country)) %>%
  ggplot(aes(x = country, y = gdpPercap, fill = country)) +
  geom_col(show.legend = FALSE) +
  coord_flip()

Una altra opció és que les columnes ens representin proporcions en lloc de valors. Ho podem fer amb l’argument position = "fill". Fixeu-vos que aquesta opció ens permet representar tres variables.

  • A l’eix horitzontal ubiquem la variable any, que hem passat a factor perquè sigui considerada categòrica.
  • A l’eix vertical ubiquem el PIB per càpita en termes relatius.
  • En el color veiem els països.
gapminder %>%   
  filter(country %in% c("Brazil", "China", "India", "United Kingdom", "United States"),
         year %in% c(1957, 1967, 1977, 1987, 1997, 2007)) %>%
  group_by(year, country) %>%
  summarize(gdp = gdpPercap * pop) %>%
  ggplot(aes(x = factor(year), y = gdp, fill = country)) +
  geom_col(position = "fill") +
  scale_fill_brewer(palette = 3, type = "qual") +
  theme_minimal()

Diagrama de caixes

Al diagrama de caixes observem com una variable numèrica està distribuïda segons els valors d’una variable categòrica.

  • Indicarem la variable categòrica en l’eix de les x.
  • Indicarem la variable numèrica en l’eix de les y.
  • En aquest cas, representarem el diagrama amb la geom_boxplot().
gapminder %>% 
  filter(year == 1992) %>%
  ggplot(aes(x = continent, y = gdpPercap)) +
  geom_boxplot()

En el diagrama de caixes observem:

  • La mitjana de la distribució.
  • El percentil 75.
  • El percentil 25.
  • Els valors extrems.

Diagrama de dispersió

El diagrama de dispersió representa amb punts la relació entre dues variables numèriques.

  • Indicarem una variable numèrica en l’eix de les x.
  • Indicarem una variable numèrica en l’eix de les y.
  • En aquest cas, representarem el diagrama amb la geom_point().
gapminder %>% 
  filter(year == 1952,
         gdpPercap < 50000) %>% 
  ggplot(aes(x = gdpPercap, y = lifeExp)) + 
  geom_point()

En alguns gràfics ens pot interessar dispersar els punts per evitar la sobrerepresentació. Utilitzarem geom_jitter() per a tal propòsit.

gapminder %>% 
  ggplot(aes(x = year, y = lifeExp, col = continent)) + 
  geom_jitter(width = 1.2, height = 0.1, alpha = 0.5) +
  theme_bw()

Més informació

En aquest enllaç podeu accedir a diversos vídeos per conèixer més a fons ggplot2.

Font: Datacamp

Next