15  Taules, gràfics i imatges

15.1 Introducció

Com ja hem pogut veure en l’anterior apartat, els chunks de Quarto ens permeten integrar taules, gràfics i imatges. En aquest apartat veurem una mica més en detall com funciona la creació de cadascun d’aquests elements.

15.2 Marc de dades

Per reproduir un marc de dades, en primer lloc l’haurem d’haver creat prèviament com a objecte en el mateix chunk o en algun chunk anterior. En cas contrari, quan pitgem Render no ens reconeixerà l’objecte i el procés s’aturarà. En el tutorial, podem observar que en un dels primers chunks del document hem creat l’objecte nmc. Per tant, podrem realitzar qualsevol acció amb nmc sempre i quan en el document de Quarto l’acció es faci en una línia posterior a la creació de l’objecte.

Això és el què hem fet. En una línia del document hem creat l’objecte i en una línia de codi posterior hem aplicat una acció a aquest objecte. Si el marc de dades en qüestió és de tipus tibble, ens reproduirà les 10 primeres observacions en un format molt semblant al que veiem quan el reproduïm a la consola.

nmc
## # A tibble: 14,322 × 10
##    stateabb ccode  year milex milper  irst   pec  tpop  upop   cinc
##    <chr>    <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
##  1 USA          2  1816  3823     17    80   254  8659   101 0.0397
##  2 USA          2  1817  2466     15    80   277  8899   106 0.0358
##  3 USA          2  1818  1910     14    90   302  9139   112 0.0361
##  4 USA          2  1819  2301     13    90   293  9379   118 0.0371
##  5 USA          2  1820  1556     15   110   303  9618   124 0.0371
##  6 USA          2  1821  1612     11   100   321  9939   130 0.0342
##  7 USA          2  1822  1079     10   100   332 10268   136 0.0329
##  8 USA          2  1823  1170     11   110   345 10596   143 0.0331
##  9 USA          2  1824  1261     11   110   390 10924   151 0.0330
## 10 USA          2  1825  1336     11   120   424 11252   158 0.0342
## # ℹ 14,312 more rows

Hi ha funcions, però, que ens permeten presentar els marcs de dades en un format visualment molt més atractiu que mitjançant l’opció que acabem de veure. Una d’elles és la funció kable() del paquet knitr. Aquesta funció ens reprodueix per defecte totes les files del marc de dades. Per evitar que a l’Html ens reprodueixi les més de 14.000 files de l’objecte nmc, el més adequat és combinar les funcions kable() i head(), com veiem en el codi següent, on demanem que ens reprodueixi només les vuit primeres files de nmc i ens ho mostri en format kable.

knitr::kable(head(nmc, 8))
stateabb ccode year milex milper irst pec tpop upop cinc
USA 2 1816 3823 17 80 254 8659 101 0.0396975
USA 2 1817 2466 15 80 277 8899 106 0.0358166
USA 2 1818 1910 14 90 302 9139 112 0.0361265
USA 2 1819 2301 13 90 293 9379 118 0.0371332
USA 2 1820 1556 15 110 303 9618 124 0.0370869
USA 2 1821 1612 11 100 321 9939 130 0.0341731
USA 2 1822 1079 10 100 332 10268 136 0.0329391
USA 2 1823 1170 11 110 345 10596 143 0.0331075

Una segona alternativa per visualitzar marcs de dades a Quarto és la funció datatable() del paquet DT. Aquesta funció és interessant perquè presenta el marc de dades amb diversos camps dinàmics que ens permeten navegar pel marc de dades, seleccionar el nombre de files que visualitzem o filtrar les files per un valor en concret.

DT::datatable(nmc)

Sigui quin sigui el format que escollim, el més normal serà fer algunes modificacions a les dades abans de presentar el marc de dades. És per això que el més recomanable és utilitzar les funcions pipe (les veurem amb detall més endavant en un altre mòdul). Les funcions pipe s’articulen amb el símbol |> i ens serveixen per enllaçar funcions que tenen com a denominador comú un mateix objecte. Per exemple, en el codi següent:

  • Utilitzem el marc de dades nmc.
  • Seleccionem i reanomenem les variables que ens interessen amb select().
  • Filtrem les primeres vuit observacions amb head().
  • Mostrem les dades en format kable()
nmc |> 
  select(State = stateabb, Year = year, Population = tpop, CINC = cinc) |> 
  head(8) |> 
  knitr::kable()
State Year Population CINC
USA 1816 8659 0.0396975
USA 1817 8899 0.0358166
USA 1818 9139 0.0361265
USA 1819 9379 0.0371332
USA 1820 9618 0.0370869
USA 1821 9939 0.0341731
USA 1822 10268 0.0329391
USA 1823 10596 0.0331075
Compte amb kable

A Quarto, amb la funció kable() les taules es reprodueixen sempre amb totes les seves observacions. Això significa que si una taula té 1.000 observacions, es reproduïrà sencera si no la tallem mitjançant codi d’R. El més aconsellable és utilitzar primer head() per mostrar només les primeres observacions del marc de dades.

Exercici 15.1 (Modifica el marc de dades) Modifica el codi anterior per tal que en el teu tutorial apareguin:

  • Les 10 primeres files del marc de dades.
  • Les columnes State, Year i Military Expenditure (per reanomenar una variable amb espais dins de select() ho hauràs de fer entre accents oberts: `Military Expenditure`).

15.3 Imatges

Tenim dues maneres d’inserir imatges a Quarto.

  1. Amb els símbols ![](), on a dins dels claudàtors podem indicar opcionalment el títol de la imatge i a dins del parèntesi indicarem, entre cometes, la direcció on es troba la imatge. En lloc de la direcció dins del directori de treball, també podem indicar-hi una direcció web.
![Cinc structure]("cinc-structure.png")
  1. A través d’un chunk, amb la funció include_graphics() del paquet knitr.
```{r echo = FALSE}
include_graphics("img/cinc-structure.png")
```

Les dimensions de la imatge es poden canviar si modifiquem els paràmetres del chunk. Per exemple, podem canviar l’amplada (fig.width), l’alçada (fig.height) o l’alineament (fig.align). O, si les proporcions ens estan bé, podem simplement indicar quina amplada ocuparà la imatge sobre l’amplada total del document (fig.width). Per exemple:

```{r cinc-str, fig.align = "center", fig.width = 50%}

```

Per veure més informació sobre com modificar les proporcions de la imatge, podeu consultar el següent enllaç.

15.4 Gràfics

D’una manera molt semblant als marcs de dades, Quarto també pot integrar gràfics. Només caldrà teclejar a dins d’un chunk un codi que reprodueixi un gràfic, com en el cas següent.

nmc |> 
  filter(stateabb %in% c("USA", "CHN")) |> 
  ggplot(aes(x = year, y = milper, col = stateabb)) +
  geom_line() +
  labs(title = "Poseu un títol al gràfic")

També podem modificar les dimensions de la imatge fent servir els mateixos paràmetres que hem après en l’edició de les imatges.

Exercici 15.2 (Modifica el gràfic) Llegeix el darrer apartat del tutorial (Imatges i gràfics). Modifica el codi anterior per tal que en el teu tutorial apareguin:

  • Dos països diferents a USA i CHN.
  • Una variable diferent a milper.
  • Posa títol al gràfic.

Per consultar la llista de països hauràs de treballar en mode R Script. Per això, hauràs de crear primer al Global Environment l’objecte nmc i consultar els països amb sort(unique(nmc$stateabb)).