Je propose ici le premier post d’une série inspirée de l’émission “One Chart at a Time” diffusée sur la chaîne Youtude du spécialiste en datavisualisation John Schwabish. Il s’agira dans chaque édition de décrire un type de graphe particulier, d’en rappeler les principes, de souligner les points importants à retenir les concernant, d’alerter sur ce que l’on devrait faire ou pas faire lorsqu’on les utilise. L’idée est d’aboutir à une lecture critique des graphes présentés et de voir comment on peut les réaliser de manière rigoureuse et esthétique. Bien sûr, l’ensemble sera illustré en utilisant GGPLOT. Pour mieux se repairer dans les différents contenus du site, les textes de la série seront indexés par un code commençant par GT (pour graph type).

Commençons notre tour d’horizon (non exhaustif) par le très simple et très classique diagrammes à bâtons (en anglais bar chart). Il est mobilisés pour présenter les effectifs des différentes modalités qualitative, catégorielle ou ordinale. Il est composé à la base d’une série de lignes ou barres dont la longueur (ou la hauteur) est proportionnelle à l’importance de la modalité exprimée. Les autres dimensions, lorsqu’il s’agit de barres, sont laissées constantes.

La principale recommandation de forme que l’on peut faire concernant ces diagrammes est de toujours faire apparaître l’origine dans le graphe, la valeur zéro à partir de laquelle la ligne représentant les effectifs commence. Faute de cela, le graphe pourrait présenter pour importantes des différences qui à bien regarder ne le sont pas.

Les barres peuvent être présentées verticalement ou horizontalement en fonction de ce qui apparaît le plus adéquate ou esthétique par rapport au document dans lequel elles s’insèrent.

Si possible, il est recommandé, afin de rendre l’ensemble plus lisible, d’appliquer une certaine logique à l’ordre des modalités présentées (de la plus fréquente à la moins fréquente ou inversement, de la plus grave à la moins grave …). Cela est à déterminer en fonction de ce que représente la variable.

Concernant les couleurs appliquées. Il est recommandé d’utiliser un ensemble neutre et de jouer sur l’intensité pour guider l’attention du lecteur sur les valeurs d’intérêt (celles que vous cherchez à mettre en avant).

Les étiquettes rappelant les catégories peuvent être intégrées dans les barres plutôt que dans une légende, ou, lorsqu’il y en a beaucoup, elles peuvent être insérées dans les intervalles les séparant. Une possibilité est d’indiquer à une extrémité le nom de la catégorie et de l’autre l’effectif mesuré.

Tous ceci étant posé, prenons des données afin d’avoir une vue plus directe de ces différents points.

library(nbastatR)
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.1.0     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
df_drafts <- drafts(draft_years = 1983:2018,
                    nest_data = FALSE,
                    return_message = FALSE)
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
## Missing DRAFT_TYPE in dictionary
## Missing PLAYER_PROFILE_FLAG in dictionary
head(df_drafts)
## # A tibble: 6 x 16
##   yearDraft numberPickOverall numberRound numberRoundPick namePlayer    slugTeam
##       <dbl>             <dbl>       <dbl>           <dbl> <chr>         <chr>   
## 1      2018                 1           1               1 Deandre Ayton PHX     
## 2      2018                 2           1               2 Marvin Bagle~ SAC     
## 3      2018                 3           1               3 Luka Doncic   ATL     
## 4      2018                 4           1               4 Jaren Jackso~ MEM     
## 5      2018                 5           1               5 Trae Young    DAL     
## 6      2018                 6           1               6 Mo Bamba      ORL     
## # ... with 10 more variables: nameOrganizationFrom <chr>,
## #   typeOrganizationFrom <chr>, idPlayer <dbl>, idTeam <dbl>, nameTeam <chr>,
## #   cityTeam <chr>, teamName <chr>, PLAYER_PROFILE_FLAG <dbl>,
## #   slugOrganizationTypeFrom <chr>, locationOrganizationFrom <chr>