[William Playfair](https://fr.wikipedia.org/wiki/William_Playfair) était un des pionniers de la présentation graphique des données. Il est notamment considéré comme l'inventeur de l'histogramme. Un de ses graphes célèbres, tiré de son livre *"A Letter on Our Agricultural Distresses, Their Causes and Remedies"*, montre l'évolution du prix du blé et du salaire moyen entre 1565 et 1821.
Le but de ce document est de reproduire dans un premier temps le graphique produit par William Playfair, puis de tenter de l'améliorer pour faire ressortir des informations plus pertinentes.

### Chargement des libraries utilisées
```{r message=FALSE}
library(tidyverse) # Manipulation de données, graphiques
library(knitr) #
library(kableExtra) # Formattage des tableaux
library(grid) # Annotations en dehors du graphe
```
## Chargement des données
Playfair n'a pas publié les données numériques brutes qu'il a utilisées, car à son époque la réplicabilité n'était pas encore considérée comme essentielle.
Celles-ci ont été déduites par numérisation et sont disponibles [ici](https://vincentarelbundock.github.io/Rdatasets/doc/HistData/Wheat.html), ou [ici au format CSV](https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Wheat.csv).
Nous téléchargeons le fichier de données en local (si celui-ci n'existe pas). Ceci afin de nous prémunir contre un éventuel problème de connexion à ce fichier.
On peut maintenant charger les données depuis le fichier local, en renommant les colonnes (la première ligne devient donc inutile) et en supprimant la première colonne (simples numéros d'identification).
```{r}
playfair <- read_csv("wheat.csv",
skip = 1, # suppression de la 1ere ligne (titre des colonnes)
col_types = c("_ddd"), # suppression de la 1ere colonne
col_names = c("year", "wheat", "wages")) # renommer les colonnes
kable_styling(bootstrap_options = "striped", full_width = FALSE, position = "left")
```
On peut vérifier si nous avons des valeurs manquantes.
```{r}
playfair %>%
filter_all(any_vars(is.na(.)))
```
Les dernières valeurs pour la variable `wages` sont manquantes, ce qu'on retrouve sur le graphe de Playfair.
## Reproduction du graphique de William Playfair
Le graphique doit permettre de visualiser le prix du blé (sous forme de barres) et le salaire moyen (par une courbe et une surface) en fonction des années.
Afin de visualiser le prix sous forme de barres comme sur le graphique, nous pourrions utiliser la fonction `geom_step()`, qui répond à la forme voulue, mais sans la possibilité de colorier les barres.
```{r}
# graphe de base : geom_step
ggplot(playfair, aes(x = year)) +
geom_step(aes(y = wheat))
```
Pour palier ce problème, nous allons utiliser à la place la fonction `geom_ribbon()` avec une astuce pour faciliter le coloriage des barres ([source](https://gist.github.com/Teebusch/db0ab76d31fd31a13ccf93afa7d77df5)).
```{r playfair-plot}
# astuce de construction, pour correspondre aux différentes marches du graphique
Nous pouvons maintenant ajouter la courbe et la surface correspondant aux salaires.
- Graphe de base : prix du blé + courbe salaire
*Note* : l'option `expand = FALSE` permet de supprimer les espaces entre les axes et le graphe. L'option `clip = "off` permettra par la suite d'ajouter des annotations à l'extérieur du graphe.
- Ajout du titre et des annotations dans le graphe
```{r warning=FALSE}
p <- p +
annotate(geom = "label", x = 1650, y = 70,
label = "CHART,\n Showing at One View\nThe Price of the Quater of Wheat,\n& Wages of Labour by the Week,\nfrom The Year 1565 to 1821,\nby William Playfair.",
fontface = "bold.italic", size = 3.5, family = "NewCenturySchoolbook",
label.r = unit(3, "lines")) +
annotate(geom = "text", x = c(1635, 1748), y = c(9, 18), label = "Weekly Wages of a Good Mechanic",
Pour la frise chronologique des rois et reines, nous allons utiliser les données disponibles [ici](https://mbostock.github.io/protovis/ex/wheat.js), et formattées au format CSV.
Ces différentes étapes permettent d'obtenir un graphique assez proche de celui de William Playfair.
## Amélioration du graphe de Playfair.
Le graphe de Playfair n'est pas parfait, et certaines pratiques semblent inconcevables aujourd'hui. Par exemple, les 2 quantités représentées, prix du blé et salaire, sont représentés sur une même ordonnée (à droite), avec une unité commune, le shilling ; ou encore l'absence d'une légende (même si le graphe de Playfair reste compréhensible).
On peut ainsi séparer les 2 quantités en utilisant deux ordonnées différentes (une à gauche et une à droite), avec des unités appropriées (ici, nous laissons la même échelle sur les deux axes, car cela ne gêne pas la visualisation globale).