# Le package {OFCE}

C’est vraiment pas compliqué

Paul Malliet
Anissa Saumtally
Xavier Timbeau

lundi 13 novembre 2023

# Introduction

Introduction

les templates Quarto

theme_ofce

Autres fonctionnalités

## Rappel sur les packages R

- un package est une librairie de fonctions développées par les utilisateurs de R dans le but d’ajouter des fonctionnalités à R

Commandes de base pour les packages

    ## on les installe avec :

    install.packages("NOM_DU_PACKAGE")

    ## on y fait appel avec

    library("NOM_DU_PACKAGE")

    ## Référence à une fonction d'un package spécifique

    NOM_DU_PACKAGE::la_super_fonction()

- On les trouve :

  - sur le CRAN : il s’agit d’un répertoire « officiel » des packages. Ils répondent à de hautes exigences qui font que ces packages sont fiables

  - sur GitHub : généralement pour les packages en développement

  - via des canaux privés : le package est transmis directement au format `.tar.gz` ou `.zip`. Attention à la source, peu de garanties sur leur utilisation

## `{pak}` : une alternative pour les gens « cool » (Xavier)

- Le package `{pak}` permet une installation simplifiée des packages à la fois provenant du CRAN et de GitHub (il gère mieux les conflits de version et dépendances)

Code

    install.packages("pak")

- Exemple d’utilisation sur un package du CRAN

Code

    pak::pak("tidyverse")

- Exemples d’utilisation sur un package sur GitHub

Code

    pak::pak("nom_utilisateur_git/nom_du_package")

    pak::pak("1961Shivani/hypothesis") ## un package random sur GitHub

    pak::pak("ThreeME-org/ermeeth") ## le package de l'équipe ThreeME trop stylé

## Package OFCE : Pourquoi ?

- Rassembler les outils développés en interne à l’OFCE :

  - harmoniser les pratiques (templates de documents, chartes graphiques, thèmes graphiques)

  - partager les outils développés par chacun pour faciliter l’utilisation de R

  Gain de temps conséquent ! Promis!

- Où le trouver ?

  - : https://github.com/OFCE/ofce.git

- Rassembler les outils développés en interne à l’OFCE :

  - harmoniser les pratiques (patrons de documents, chartes graphiques, thèmes graphiques)

  - partager les outils développés par chacung pour faciliter l’utilisation de R

## Installation du package

- 1. R
- 2. Quarto
- 3. `{ofce}`

- Vérifier que la version de R est à jour (au moins 4.3.0)

    R.version$version.string

    [1] "R version 4.3.1 (2023-06-16)"

- télécharger et installer la dernière version de R

  - https://cran.r-project.org

- (sur Windows) Activer cette version `tools/Global Options`

- Installer R Studio (mais ça vous l’avez déjà, n’est-ce pas ?)

  - https://posit.co/products/open-source/rstudio/

- Il faut installer Quarto (l’application) au moins la version 1.4 (pre-release)

  - https://quarto.org/docs/download/

- https://quarto.org/docs/download/

- Installer le package `{quarto}`

    pak::pak("quarto")

- Installer l’extension fontawesome (via le terminal)

    quarto add quarto-ext/fontawesome

- Le package `{ofce}` est hébergé sur le compte GitHub de l’OFCE

  - …Donc ?

Code

    pak::pak("OFCE/ofce")

# les templates Quarto

Introduction

les templates Quarto

theme_ofce

Autres fonctionnalités

## Résumé des fonctions

Quelque part, sont ajoutés tous les éléments pour le `yaml`, des bouts de code html, latex pour faire le document. Tout se trouve dans `_extension`s.

On l’ajoute dans le dossier où se trouve le `qmd` et on fait référence dans le `yaml` avec les lignes :

    ---
    format:
       wp-html: default
       wp-pdf: default
    ---

## Les différents types de document

- working paper : ajoute le dossier `_extensions` et fait un document exemple que l’on peut modifier
  `setup_wp()` ou pour le faire dans un dossier spécifique `setup_wp("mon_dossier")`

- blog : `setup_blog()`

- présentation : `setup_pres()`

- pour appliquer à un `qmd` existant
  `setup_quarto()` (ne fait que remettre `_extensions` à jour)

Il est possible de spécifier

- des paramètres dans le `yaml`

- d’ajouter des filtres lua

- de modifier les codes `html`, `latex`, `scss`

## Demo Time !

via GIPHY

# theme_ofce

Introduction

les templates Quarto

theme_ofce

Autres fonctionnalités

- Le package ‹ofce› contient plusieurs fonctions associées à la réalisation d’un graphe sous R en format publiable

- Les modifications apportées peuvent se distinguer en trois groupes:

  - Les modifications de thème: tout ce qui a a attrait aux différents élements du graphe (axes, fond, légende…)
  - La modification des couleurs utilisées
  - L’ajout d’élements exterieurs supplémentaires hors thème

## Faire un graphique sous R

### Un graphique basique

    # create a dataset
    countries <- c(rep("Espagne" , 3) , rep("France" , 3) , rep("Allemagne" , 3) , rep("Italie" , 3) )
    condition <- rep(c("food index" , "drink index" , "beauty index") , 4)
    value <- abs(rnorm(12 , 0 , 15))
    data <- data.frame(countries,condition,value)

    # Grouped
    p <- ggplot(data, aes(fill=condition, y=value, x=countries)) +
        geom_bar(position="dodge", stat="identity")
    p

## Faire un graphique sous R

### Un graphique basique

Figure 1: Un graphe simple de type `geom_bar`

## Faire un graphique sous R

### Ajout du theme `ofce`

    p + theme_ofce()

    p <- p +
       theme_ofce() +
      theme(legend.title = element_blank(),
            legend.position = "bottom") +
      labs(x = element_blank(),
           # y = element_blank()
           y = "Note sur 100"
           )
    p

## Faire un graphique sous R

### Ajout du theme `ofce`

Figure 2: Ajout d’un theme ‹ofce› et manipulations sur les fonctions themes
Figure 3: Ajout d’un theme ‹ofce› et manipulations sur les fonctions themes

## Faire un graphique sous R

### Changement des couleurs

- Ex.1
- Ex.2
- Ex.3

    # Une palette 'basique' ofce_palette
    p <- p + scale_fill_manual(values = ofce::ofce_palette(n=3))
    p

Figure 4: utilisation de palettes séquentielle (p1) et divergente(P2)

    # Une palette 'sequentielle' ofce_palette_seq
    p1 <- p + scale_fill_manual(values = ofce::ofce_palette_seq(n=3))
    p1

Figure 5: utilisation de palettes séquentielle (p1) et divergente(P2)

    # Une palette 'divergente' ofce_palette_div
    p2 <- p + scale_fill_manual(values = ofce::ofce_palette_div(n=3))
    p2

Figure 6: utilisation de palettes séquentielle (p1) et divergente(P2)

## Faire un graphique sous R

### Ajout d’un logo

    # Soit à l'exterieur du graphique
    p %>% add_logo_ofce()

    # Soit à l'intérieur du graphique
    p %>% add_logo_ofce_inside()

## Faire un graphique sous R

### Ajout d’un logo

Figure 7: Ajout d’un logo (image)

# Autres fonctionnalités

Introduction

les templates Quarto

theme_ofce

Autres fonctionnalités

## Exporter un graphique

Ces trois fonctions aident à exporter un graphique. Elles utilisent `showtext` pour assurer la bonne sortie des caractères à la bonne taille

- `graph2png(graph, file="", rep="svg", ratio = 4/3, dpi = 600)`

pour un texte imprimé (A4), un bon ratio est 4/3, pour une présentation (16/10). Pour une carte ratio 1.

- `graph2svg`

- `graph2jpg`

## f2si2

cette fonction sert à appliquer le Système International pour produire une chaîne de caractère compacte et lisible en utilisant des puissance de 1 000 et une notation standardisée (k, M, G, T, …).

Pratique pour les messages ou les échelles.

    ofce::f2si2(c(2000000, 3000000), digits = 2)

    [1] "2M" "3M"

    ofce::f2si2(c(142010, 2000000, 100.1928), digits = 2)

    [1] "142.01k" "2000k"   "0.1k"

    purrr::map_chr(c(142010, 2000000, 0.1928), ofce::f2si2)

    [1] "142k"   "2M"     "192.8m"

    ofce::uf2si2(c(1100,1110,2000,2100))

    [1] "1.1k"  "1.11k" "2k"    "2.1k"

## Préférences de RStudio

la fonction `setup_RStudio()` force les préférences de RStudio à être :

- pas de `save` de `.Rdata`

- utilisation du « pipe natif »

- utilisation du moteur graphique `ragg`

- thème « iPlastic » (peut être un autre thème avec `theme="Unautretheme"`)

- console à droite

- et quelques autres

## Evolutivité du package `{ofce}`

## Conclusion : pour résumer

- On installe R, RStudio, Quarto, le package `{ofce}`

- Un joli working paper en quarto prend 15 secondes avec `setup_wp`

- Une présentation un peu moderne prend 10 secondes avec `setup_pres`

- La mise en forme d’un graphique ggplot prend 5 secondes avec `theme_ofce()`

- Le package `{ofce}` peut être encore meilleur grâce à vous !

## Alors ?

## Prochaines étapes

- package encore en évolution : signalez vos difficultés, les bugs, vos souhaits
- modèle de documents supplémentaires (policy brief, rapport)

- définition d’une charte graphique du site web (html) aux documents (pdf)
- intégration de la production de documents quarto directement sur le site via un processus simple (github)

  - blogs

  - documents de travail

  - policy brief

## Merci pour votre attention

via GIPHY

## Références