21 janvier 2016

Croiser des séries de données

De nouveau sur l'établi, une interface que j'avais réalisée en 2014 pour comparer des séries de données numériques.

Je propose de visualiser les ensembles de données communes : les intersections entre les séries, les intersections minimales et maximales, les données partagées sur l'ensemble ou sur une série, les données les plus représentées…
Ainsi que d'introduire ses propres données.

Croiser des séries de données sur Equatorium.

Edit du 11/02 : ce billet a été remanié depuis sa publication le 21 janvier 2016, l'interface ayant encore évolué depuis.
(Mais n'a pas encore été testée sur Internet Explorer 10+.)

Outre l'amélioration du design, une dynamisation de l'interface

  • La dynamisation du jeu des données : une sélection possible entre différents sujets, différents ensembles de données
    - "les sonates de Scarlatti dans 6 albums" <>
    - "les meilleurs millésimes dans 6 régions vinicoles" <>
    - "les départements traversés par 4 bassins fluviaux" <>.
  • La personnalisation des données : par la saisie d'autres séries, en draggant-dropant ou en sélectionnant un fichier .txt ou .js,
    ici un fichier démo téléchargeable à adapter aux données que l'on veut charger et visualiser
    - développé via l'API FileReader <>
    - via un test de conformité par expressions régulières du format des données saisies <> ; sur regex101 pour les aficionados, test 1 (suffisant) et test 2 (complet).
  • Classement entre les séries pour les ordonner selon le nombre de données partagées.
  • Conservation des données saisies d'une session à l'autre, mémorisation des paramètres d'affichage, restitution de l'état de la visualisation et de la manipulation : sélections, partages, mode d'emploi, présentation par ligne ou par colonne…
    - développé via localStorage <>
    - via les promesses <>.
  • Rétablir l'affichage par défaut, oublier les données saisies.
  • Toujours côté utilisateur, la possibilité de manipuler au clavier aussi bien qu'à la souris tous les éléments de l'interface, boîtes de sélection <>, liens au survol, au focus et au clic, avec cohérence entre les modes <>.
    La fluidité de l'usage est également confortée par un emploi optimal de la sémantique et des CSS.
  • Côté technique encore, l'emploi en JavaScript des prototypes <> pour instancier et gérer des éléments de l'interface aux comportements similaires, les liens de l'amplitude des partages.
    Et des algorithmes donnant à visualiser facilement les intersections limites pour deux séries <>, les séries ayant les données les plus représentées <>, etc.

Une analyse des donnés

Le plus important sans doute, l'analyse algorithmique des données procure, au-delà de la sélection libre des séries visualisant leurs données partagées,
deux axes supplémentaires de visualisation :

  1. l'analyse des intersections minimale et maximale pour deux séries sur l'ensemble des données, afin de visualiser les paires qui y répondent ;
  2. l'analyse du partage, de l'extension des données d'une série sur les autres et ses amplitudes :
    - quelle série a les données les plus/les moins représentées sur l'ensemble ?
    - quelle série a le plus/le moins de données partagées en son propre sein ? - quelle série a le plus de données représentées sur le plus grand nombre de séries ?

Le second axe amène à considérer le partage des données entre séries sous le point de vue euclidien de :

  • la surface - extension des données partagées d'une série sur toutes,
  • la largeur - dans une unique série, dimension "horizontale", et
  • la profondeur - de façon transverse, dimension "verticale".

Datavisualisation simple

Sans librairie spécialisée (D3), il est possible de mettre en œuvre une interface simple et complète de visualisation, aux fonctionnalités précises, avancées, quelque fois complexes à agencer dans un développement et une ergonomie que l'on veut garder légers.
Les axes et modes de visualisation restent combinables.

La page est sur Equatorium, et le code sur Github <>.

La partie initiale <> des scripts date de 2014 et est procédurale, mais j'ai pu l'étendre sans grand mal.

Parmi les "to do" du 21 janvier, il y avait à trouver l'intersection la plus/la moins riche entre deux séries, ce qui est fait.
Resterait <> principalement à ouvrir l'interface aux données non numériques.

Aucun commentaire: