--- title: "Principes de design, Visualisation de données tabulaires" author: "Maxime Wack" date: "19/11/2019" output: xaringan::moon_reader: css: ['default','css/my_style.css'] lib_dir: libs seal: false nature: ratio: '4:3' countIncrementalSlides: false self-contained: true beforeInit: "addons/macros.js" --- ```{r, include = FALSE} library(tidyverse) library(DT) library(knitr) opts_chunk$set(echo = F, warning = F, error = F, message = F) options(DT.options = list(paging = F, info = F, searching = F)) datatable <- partial(datatable, rownames = F) ``` class: center, middle, title # UE Visualisation ### 2019-2020 ## Dr. Maxime Wack ### AHU Informatique médicale #### Hôpital Européen Georges Pompidou,
Université de Paris --- class: center, middle # Objectifs ## Principes de design ## Visualisation de données tabulaires --- class: center, middle # Principes de design --- class: center # *Éléments* de design ### Espace ### Point ### Ligne ### Surface ### Taille ### Couleur ### Forme ### ... --- class: center # *Principes* de design Autant de principes que de designers ![:scale 50%](03_img/designprinciples.png) [https://principles.design](https://principles.design) --- class: center # Principes de design ### Unité/Harmonie ### Motifs ### Équilibre ### Hiérarchisation ### Mouvement ### Contraste --- class: middle # Unité / Harmonie .pull-left[ ### Principe **fondamental** de la visualisation ### L'ensemble doit être **visuellement cohérent** ### Notion de **composition** des éléments en un tout ] .pull-right[![:scale 100%](03_img/princ_unite.png)] --- class: middle # Motifs .pull-left[ ### Répétition **régulière** d'un ou plusieurs *éléments* ### Principal outil de la visualisation de **collections de données** ] .pull-right[![:scale 100%](03_img/princ_motif.png)] --- class: middle # Équilibre .pull-left[ ### Distribution **équilibrée** des éléments visuels ### Utiliser la **symmétrie** pour comparer ### Utiliser l'**assymétrie** pour appuyer sur les différences ### La symmétrie **radiale** permet d'organiser autour d'un élément central ] .pull-right[![:scale 100%](03_img/princ_equilibre.png)] --- class: middle # Hiérarchisation .pull-left[ ### **Insister** sur le message à communiquer ### Donner une **importance relative** indicative de la réalité ### Choix des couleurs (*rareté* des couleurs) ### Gestion du **contraste** ### **Échelles** et **proportions** ] .pull-right[![:scale 80%](03_img/princ_hierarch.png)] --- class: middle # Mouvement .pull-left[ ### Même sur une image **fixe** ### Notion de directionalité ### **Diriger** le regard du lecteur ] .pull-right[![:scale 100%](03_img/princ_mouvement.png)] --- class: middle # Contraste .pull-left[ ### **Juxtaposition** d'éléments **opposés** (couleur, luminosité, direction) ### Mise en avant **relative** ### Contraste ↔ Similarité ] .pull-right[![:scale 100%](03_img/princ_contraste.png)] --- class:center,middle # Code ## **Pas** de code spécifique ### Application des *principes* en manipulant les *éléments* ### *Data* → **Motifs, Mouvement** ### *Aesthetics* → **Hiérarchisation, Contraste** ### *Theme* → **Unité, Équilibre** --- class:center, middle # Exemples [Dark Horse Analytics](https://www.darkhorseanalytics.com/blog/data-looks-better-naked) --- class:center, middle ![](03_img/data-ink.gif) --- class:center, middle ![](03_img/ClearOffTheTableMd.gif) --- class:center, middle ![](03_img/map_reduce2.gif) --- class:center, middle ![](03_img/devourThePie3.gif) --- class: center, middle # Visualisation de données tabulaires --- class:center # Excel ![](03_img/excel_data.png) --- class:center, middle ![](03_img/excel_menu.png) --- class:center, middle ![](03_img/excel_graph.png) --- # Edgar F Codd .pull-left[ ### 1923 - 2003 ### Prix Turing 1981 ### Inventeur des **modèles relationnels** pour la gestion de bases de données ### Définition des formes normales dans un papier de conférence en **1971** ] .pull-right[![](03_img/Edgar_F_Codd.jpg)] --- # Formes normales ## 1NF : une donnée par cellule *Le domaine de chaque attribut ne contient que des données atomiques* ## 2NF : 1NF + attributs par clé *Un attribut non-clé ne dépend pas d'une partie de la clé mais de toute la clé* ## 3NF : 2NF + attributs de la clé indépendants les uns des autres *Un attribut non-clé ne dépend pas d'un ou plusieurs attributs ne participant pas à la clé* --- class: center # 1NF .tiny[ ```{r 0nf} data.frame(Produit = "TV", Fournisseur = "samsung, sony") %>% datatable ``` ] ↓ ```{r 1nf} data.frame(Produit = c("TV", "TV"), Fournisseur = c("samsung", "sony")) %>% datatable ``` --- class: center # 2NF ```{r 2nf} data.frame(Produit = c("TV", "Phone", "TV"), Fournisseur = c("Samsung", "Samsung", "Sony"), Ville = c("Seoul", "Seoul", "Tokyo")) %>% datatable ``` ↓ ```{r 2nf ok} data.frame(Produit = c("TV", "Phone", "TV"), Fournisseur = c("Samsung", "Samsung", "Sony")) %>% datatable data.frame(Fournisseur = c("Samsung", "Sony"), Ville = c("Seoul", "Tokyo")) %>% datatable ``` --- class: center # 3NF ```{r 3nf} data.frame(Fournisseur = c("Samsung", "Sony"), Ville = c("Seoul", "Tokyo"), Pays = c("Corée du sud", "Japon")) %>% datatable ``` ↓ ```{r 3nf ok} data.frame(Fournisseur = c("Samsung", "Sony"), Ville = c("Seoul", "Tokyo")) %>% datatable data.frame(Ville = c("Seoul", "Tokyo"), Pays = c("Corée", "Japon")) %>% datatable ``` --- class: center # À plat ```{r flat} data.frame(Produit = c("TV", "Phone", "TV"), Fournisseur = c("Samsung", "Samsung", "Sony"), Ville = c("Seoul", "Seoul", "Tokyo"), Pays = c("Corée", "Corée", "Japon")) %>% datatable ``` ### Opération facile à réaliser ### Chaque observation contient toute l'information --- class: center # Avec ggplot2 ### Relation **1:1** entre *observation* et unité de *geometry* ### Valeur d'*aesthetic* directement accessible par *observation*