reproduction et mise a jour du graphe de Playfair

parent 19fe4724
...@@ -202,4 +202,190 @@ l'analyse de nos données. ...@@ -202,4 +202,190 @@ l'analyse de nos données.
* Reproduction des résultats de William Playfair * Reproduction des résultats de William Playfair
TODO Avant d'effectuer nos propres opérations sur les données receuillies,
tentons de reproduire le
[[https://upload.wikimedia.org/wikipedia/commons/3/3a/Chart_Showing_at_One_View_the_Price_of_the_Quarter_of_Wheat%2C_and_Wages_of_Labour_by_the_Week%2C_from_1565_to_1821.png][graphe]]
proposé par William Playfair dans son étude.
Celui-ci représentait l'évolution du prix du blé à l'aide de barres,
un barre par tranche de 5 années, et l'évolution des salaires à l'aide
d'une aire bleue délimitée d'une courbe rouge.
Pour reproduire ce graphe nous allons utilisé la librairie /ggplot2/,
qui permet une création de graphe simple, étape par étape.
#+begin_src R :results silent :session *R*
library(ggplot2)
#+end_src
** Évolution du prix du blé
Comme introduit plus tôt, nous souhaitons visualiser l'évolution du
prix du blé au cours du temps à l'aide d'un /barplot/, que nous obtenons
via la fonction /geom_bar()/.
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
p <- ggplot(table, aes(x=Year)) + geom_bar(stat="identity", aes(y=Wheat))
p
#+end_src
#+RESULTS:
[[file:/tmp/babel-Oq2fjp/figureKb9HYv.png]]
Notons que, puisque nous avons supprimée les entrées pour lesquelles
nous n'avions pas de valeurs pour la colonne /Wages/, les trois
dernières barre du graphe original ne sont pas présentes dans notre
reproduction.
** Évolution des salaires
Dans l'étude de Playfair, l'évolution des salaires était représentée à
l'aide d'une aire bleue délimitée par une courbe rouge.
Pour reproduire cela nous utilisons la fonction /geom_area()/ pour
l'aire et la fonction /geom_line()/ pour la ligne de délimitation.
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
p <- p + geom_area(aes(y=Wages),stat="identity",fill="lightblue")
p <- p + geom_line(aes(y=Wages),color="red",size=2)
p
#+end_src
#+RESULTS:
[[file:/tmp/babel-Oq2fjp/figurehiCWPa.png]]
** Ajout de divers éléments
Maintenant que nous avons affiché nos données dans un graphe à la
manière de Playfair, nous allons procéder à quelques ajouts pour nous
rapprocher du graphe initial, tels que:
- Changer le label de l'axe des ordonnées en "Shillings"
- Répartir l'axe des ordonnées en divisions de 5 shillings
- Répartir l'axe des abscisses en divisions de 10 années
- Ajouter un titre
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
p <- p + ylab("Shillings")
p <- p + scale_y_continuous(breaks=seq(0,100,5),sec.axis=sec_axis(~.,name=derive(),breaks=derive()))
p <- p + scale_x_continuous(breaks=seq(min(table$Year),max(table$Year),10)) + theme(axis.text.x = element_text(angle=45))
p <- p + ggtitle("Showing at one view the price of the quarter of Wheat and Wages of labour by the week")
p
#+end_src
#+RESULTS:
[[file:/tmp/babel-Oq2fjp/figurehqdsjW.png]]
* Mise à jour du graphe de Playfair
Lors de la sortie de ses travaux, Playfair était un pionnier de la
présentation graphique des données.
Cependant, certains choix de représentation ne sont plus admissible de
nos jours.
Dans cette section nous proposons des modifications pour mettre le
graphe de Playfair en adéquation avec les normes actuelles.
** Différenciation entre Prix et Salaires
Dans son graphe, Playfair combine "Shillings par quart de boisseau de
blé" et "Shillings par semaine" en une seule unité "Shillings", ce qui
n'est plus acceptable de nos jours.
Notre première modification du graphe de Playfair consistera donc à
différencier les unités "Shillings par quart de boisseau de blé" et
"Shillings par semaine" en utilisé deux axes distinct.
Pour ce faire nous utilisons simplement le paramètre /sec.axis/ de la
fonction /scale_y_continuous()/.
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
ggplot(table, aes(x=Year)) +
geom_bar(aes(y=Wheat), stat="identity") +
geom_area(aes(y=Wages), stat="identity", fill="lightblue") +
geom_line(aes(y=Wages), stat="identity", color="red",size=2) +
ylab("Price of the Quarter of Wheat in Shillings") +
scale_y_continuous(breaks=seq(0,100,5),sec.axis=sec_axis(~.,name="Weekly Wages in Shillings",breaks=derive()))+
scale_x_continuous(breaks=seq(min(table$Year),max(table$Year),10)) + theme(axis.text.x = element_text(angle=45)) +
ggtitle("Showing at one view the price of the quarter of Wheat and Wages of labour by the week")
#+end_src
#+RESULTS:
[[file:/tmp/babel-Oq2fjp/figurel7s6rU.png]]
** Autre représentation
Mixer ensemble un /barplot/ et un /linechart/, mis à part dans des cas
très spécifiques, peut rendre compliquer la comparaison des données.
De nos jours, il est préférable d'utiliser le même type de
représentation graphique lors de la comparaison entre deux données.
Cependant, il nous faut dans un premier temps retravailler le format
de nos données à l'aide de la fonction /melt()/ de la librairie /reshape2/,
afin de rendre plus aisé leur représentation à l'aide de /ggplot/.
#+begin_src R :results output :session *R* :exports both
library(reshape2)
n_data <- melt(table, id.vars="Year", measure.vars=c("Wheat","Wages"))
summary(n_data)
#+end_src
#+RESULTS:
:
: Year variable value
: Min. :1565 Wheat:50 Min. : 5.00
: 1st Qu.:1625 Wages:50 1st Qu.: 7.90
: Median :1688 Median :27.25
: Mean :1688 Mean :26.86
: 3rd Qu.:1750 3rd Qu.:40.12
: Max. :1810 Max. :99.00
Une première représentation possible est d'utiliser des barres les
prix et pour les salaires, cela afin de rendre plus aisée leur
comparaison.
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
ggplot(n_data, aes(x=Year, y=value, fill=variable)) +
geom_bar(stat="identity",position=position_dodge()) +
ylab("Price of the Quarter of Wheat in Shillings") +
scale_y_continuous(breaks=seq(0,100,5),sec.axis=sec_axis(~.,name="Weekly Wages in Shillings",breaks=derive()))+
scale_x_continuous(breaks=seq(min(table$Year),max(table$Year),10)) + theme(axis.text.x = element_text(angle=45))
#+end_src
#+RESULTS:
[[file:/tmp/babel-Oq2fjp/figureJPGcBM.png]]
Cependant, si cette représentation permet de comparer prix du blé et
salaire hedbomadaire, la prix du blé reste assez volatile et il est
compliqué d'observer l'évolution conjointe de ces deux données.
Pour ce faire nous allons plutôt utiliser une représentation par nuage
de points et régressions à l'aide des fonctions /geom_point()/ et
/geom_smooth()/.
#+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R*
ggplot(n_data,aes(x=Year,y=value, color=variable)) +
geom_point() +
geom_smooth() +
ylab("Price of the Quarter of Wheat in Shillings") +
scale_y_continuous(breaks=seq(0,100,5),sec.axis=sec_axis(~.,name="Weekly Wages in Shillings",breaks=derive()))+
scale_x_continuous(breaks=seq(min(table$Year),max(table$Year),10)) + theme(axis.text.x = element_text(angle=45))
#+end_src
#+RESULTS:
[[file:/tmp/babel-Oq2fjp/figureQM6mAu.png]]
Avec cette dernière représentation, nous pouvons observer une
augmentation quasi-linéaire des salaires depuis environ l'année
1700, ainsi qu'une diminution du prix du blé jusqu'à environ l'année
1750, ce qui peut laisser supposer à une augmentation du "pouvoir
d'achat" des salariés.
Cependant, nous pouvons aussi observer qu'à partir de 1750 (environ),
le prix du blé a augmenté de manière drastiquement plus rapidement que
les salaires hebdomadaire.
Cette observation remet quelque peu en question l'augmentation du
pouvoir d'achat des salariés décrite par William Playfair.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment