Travaux pratiques - Petits multiples

Références externes utiles :

On propose d’étudier ici les petits multiples, appliqués au cas des chroniques (courbe continue représentant la variation temporelle d’une donnée quantitative : température, cours d’action etc.). L’objectif est d’arriver à une répresentation qui facilite le passage à l’échelle (la densification). On étudiera aussi comment ajouter à ces courbes des informations supplémentaires, comme le dépassement d’un seuil fixé à l’avance. Tufte est le promoteur de telles représentations, qu’il a appelé des « sparklines » (Tufte, Beautiful evidence, chap.2).

Petits multiples 1

Petits multiples 2

Petits multiples 3

Pour simplifier l’étude, on utilisera des séquences aléatoires au lieu de données réelles. Une fonction de Processing très utile dans ce contexte est noise(), qui fournit un bruit avec auto-corrélation entre 0 et 1 (bruit de Perlin). Pour générer la i-ème valeur de la j-ème chronique, on utilisera noise(i,j).

Exercice 1 - Classe Chronique

On commence par écrire une méthode permettant l’affichage d’une chronique de N valeurs dans un rectangle de position (X,Y) et de dimension (W,H).

  1. Définir la classe, ses attributs, son constructeur (qui initialise le tableau des N valeurs) puis la méthode d’affichage. Pour cette dernière, de nombreux choix graphiques sont possibles. Dans un premier temps, on va afficher une barre verticale pour chaque mesure. Il faut bien sûr trouver comment espacer les N barres sur la largeur W du rectangle de dessin, et aussi contraindre les hauteurs de barres dans la limite H.

  2. Faire un dessin qui résume les tracés à faire.

  3. Tester ensuite la classe dans un programme principal avec setup() et draw(), avec une ou deux instances de la classe. On donnera aux chroniques une position dans l’écran et des dimensions au choix.

Exercice 2 - Graphisme amélioré

Pour les images ci-dessus, on a utilisé une spline, avec la fonction curveVertex(). Ajouter une nouvelle méthode d’affichage qui fonctionne de cette manière.

Ajouter aussi un affichage spécifique pour les valeurs de la chronique qui dépassent un seuil S fixé (par exemple, un point rouge comme fait Tufte). Tester comme pour l’exercice 1.

Exercice 3 - Passage aux petits multiples

On crée maintenant un programme principal avec une matrice carrée de DIM x DIM chroniques. Calculer comment placer les chroniques dans le plan de dessin selon cette matrice.

Tester le programme avec quelques valeurs de DIM (sur les images ci-dessus, DIM = 2, 5 et 9). On voit qu’il faut rendre les épaisseurs de tracé dépendants de DIM.

Exercice 4 - Un programme interactif pour explorer le passage à l’échelle

Modifier le programme précédent pour inclure des actions de l’utilisateur permettant de :

  1. Augmenter ou réduire DIM (dans des limites raisonnables),

  2. Augmenter ou réduire N, le nombre de points par chronique,

  3. Augmenter ou réduire le seuil S (0.8 dans les images ci-dessus),

  4. Enregistrer l’image courante dans un fichier, avec la fonction saveFrame().

On peut se contenter d’une saisie clavier pour ces commandes, avec la fonction keyPressed().

Pour continuer

Plein de possibilités, par exemple :

  1. Rechercher à partir de quelles valeurs de DIM, N ou S la densification devient excessive.

  2. Créer des chroniques plus alongées avec plus de points, en lignes et ajouter les autres paramètres des Sparklines de Tufte (voir son livre ou sur son site Web).

Exemple livre
  1. Travailler avec des données qui évoluent avec le temps, comme dans un système d’acquisitions de mesures. A chaque calcul de frame, on rafraichit le tableau de toutes les chroniques en insérant une nouvelle valeur.

  2. Dessiner des diagrammes en radar au lieu de chroniques (cf demo en cours), ou des nuages de points, ou encore des histogrammes…