SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Copy Right © DSI GROUP
D3.js
Récapitulatifs des Fonctionnalités
MOHAMED BOUHAMED COPY RIGHT @ DSI GROUP
1
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
Table des matières
Qu'est-ce que D3.js :...................................................................................................3
Introduction.................................................................................................................3
Exemple et Fonctionnalités :.......................................................................................3
Sélections :..............................................................................................................3
Propriétés dynamiques :..........................................................................................4
Les entrées sorties :.................................................................................................6
Transformation non représentative :.......................................................................7
Transitions :.............................................................................................................8
2
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
Data-Driven Documentations
Qu'est-ce que D3.js :
D3.js est une bibliothèque JavaScript pour manipuler des documents basés sur des données.
D3 vous aide à donner vie aux données en utilisant HTML5, SVG et CSS.
L'accent mis par D3 sur les standards web vous donne toutes les capacités des navigateurs modernes sans
vous attacher à un framework propriétaire, combinant de puissants composants de visualisation et une
approche basée sur les données pour la manipulation DOM ('Document Object Model : La structure d'une
page web').
Introduction
D3 vous permet de lier des données arbitraires à un DOM (Document Object Model), puis d'appliquer des
transformations pilotées par les données au document. Par exemple, vous pouvez utiliser D3 pour générer
une table HTML à partir d'un tableau de nombres.
Ou, utilisez les mêmes données pour créer un graphique à barres SVG ('sequel graphic visualisation')
interactif avec des transitions et des interactions en douceur.
D3 une manipulation efficace des documents basés sur les données. Cela évite la représentation
propriétaire et offre une flexibilité extraordinaire, exposant toutes les fonctionnalités des standards Web
tels que HTML, SVG et CSS. Avec un minimum de frais généraux, D3 est extrêmement rapide, prenant
en charge de grands ensembles de données et des comportements dynamiques pour l'interaction et
l'animation. Le style fonctionnel de D3 permet la réutilisation de code à travers une collection diverse de
modules officiels et développés par la communauté.
Exemple et Fonctionnalités :
Sélections :
La modification de documents à l'aide de l'API DOM du W3C est fastidieuse : les noms de méthodes sont
verbeux, et l'approche impérative requiert une itération manuelle et une comptabilité de l'état temporaire.
Par exemple, pour modifier la couleur du texte des éléments de paragraphe.
3
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
var paragraphs = document.getElementsByTagName("p");
for (var i = 0; i < paragraphs.length; i++)
{ var paragraph = paragraphs.item(i);
paragraph.style.setProperty("color", "white", null);
}
D3 utilise une approche déclarative, opérant sur des ensembles arbitraires de nœuds appelés sélections.
Par exemple, vous pouvez réécrire la boucle ci-dessus comme suit :
d3.selectAll("p").style("color", "white");
Pourtant, vous pouvez toujours manipuler des nœuds individuels au besoin :
d3.select("body").style("background-color", "black");
Les sélecteurs sont défnis par l'API W3C Selectors et pris en charge de manière
native par les navigateurs modernes. Les exemples ci-dessus sélectionnent les
noeuds par nom de tag ("p" et "body", respectivement). Les éléments peuvent être
sélectionnés en utilisant une variété de prédicats, y compris le confnement, les
valeurs d'attribut, la classe et l'ID.
D3 fournit de nombreuses méthodes pour la mutation de nœuds : défnition
d'attributs ou de styles enregistrement d'auditeurs d’événements ajouter,
supprimer ou trier des nœuds, et changer le contenu HTML ou texte. Ceux-ci
suffisent pour la grande majorité des besoins.
L'accès direct au DOM sous-jacent est également possible, car chaque sélection D3
est simplement un tableau de nœuds.
Propriétés dynamiques :
Les lecteurs familiers avec d'autres frameworks DOM tels que jQuery doivent
immédiatement reconnaître les similitudes avec D3.
4
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
Pourtant, les styles, attributs et autres propriétés peuvent être spécifés en tant que
fonctions de données dans D3, et pas seulement des constantes simples.
Malgré leur apparente simplicité, ces fonctions peuvent être étonnamment
puissantes, La fonction d3.geoPath, par exemple, projette des coordonnées
géographiques dans des données de chemin SVG.
D3 fournit de nombreuses fonctions réutilisables intégrées et des fabriques de
fonctions, telles que des primitives graphiques pour les diagrammes à secteurs,
linéaires et sectoriels.
Par exemple, pour colorier aléatoirement des paragraphes :
d3.selectAll("p").style("color", function() {
return "hsl(" + Math.random() * 360 + ",100%,50%)";
});
Pour alterner les nuances de gris pour les nœuds pairs et impairs :
d3.selectAll("p").style("color", function(d, i) {
return i % 2 ? "#fff" : "#eee";
});
Les propriétés calculées font souvent référence à des données liées. Les données
sont spécifées sous la forme d'un tableau de valeurs et chaque valeur est
transmise en tant que premier argument (d) aux fonctions de sélection.
Avec l'index de jointure par défaut, le premier élément du tableau de données est
transmis au premier nœud de la sélection, le deuxième élément au second nœud,
etc.
Par exemple, si vous liez un tableau de nombres à des éléments de paragraphe,
vous pouvez utiliser ces nombres pour calculer des tailles de polices dynamiques :
d3.selectAll("p")
.data([4, 8, 15, 16, 23, 42])
.style("font-size", function(d) { return d + "px"; });
5
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
Une fois les données liées au document, vous pouvez omettre l'opérateur de
données, D3 récupérera les données précédemment liées. Cela vous permet de
recalculer les propriétés sans relier.
Les entrées sorties :
En utilisant les sélections d'entrée et de sortie de D3, vous pouvez créer de
nouveaux noeuds pour les données entrantes et supprimer les noeuds sortants dont
vous n'avez plus besoin.
Lorsque les données sont liées à une sélection, chaque élément du tableau de
données est associé au nœud correspondant de la sélection.
S'il y a moins de nœuds que de données, les éléments de données supplémentaires
forment la sélection d'entrée, que vous pouvez instancier en l'ajoutant à la sélection
d'entrée. Par exemple :
d3.select("body")
.selectAll("p")
.data([4, 8, 15, 16, 23, 42])
.enter().append("p")
.text(function(d) { return "I’m number " + d + "!"; });
Les nœuds de mise à jour sont la sélection par défaut, le résultat de l'opérateur de
données. Ainsi, si vous oubliez les sélections d'entrée et de sortie, vous ne
sélectionnez automatiquement que les éléments pour lesquels il existe des données
correspondantes.
Un modèle commun consiste à décomposer la sélection initiale en trois parties : les
nœuds de mise à jour à modifer, les nœuds entrants à ajouter et les nœuds
sortants à supprimer.
// Update…
var p = d3.select("body")
.selectAll("p")
6
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
.data([4, 8, 15, 16, 23, 42])
.text(function(d) { return d; });
// Enter…
p.enter().append("p")
.text(function(d) { return d; });
// Exit…
P.exit().remove();
En gérant ces trois cas séparément, vous spécifez précisément quelles opérations
s'exécutent sur quels noeuds.
Cela améliore les performances et offre un meilleur contrôle sur les transitions.
Par exemple, avec un graphique à barres, vous pouvez initialiser l'entrée de barres
à l'aide de l'ancienne échelle, puis faire la transition entre les barres de la nouvelle
échelle et les barres de mise à jour et de sortie.
D3 vous permet de transformer des documents en fonction des données, cela inclut
à la fois la création et la destruction d'éléments. D3 vous permet de modifer un
document existant en réponse à une interaction de l'utilisateur, une animation au fl
du temps ou même une notifcation asynchrone d'un tiers.
Une approche hybride est même possible, où le document est initialement rendu
sur le serveur, et mis à jour sur le client via D3.
Transformation non représentative :
D3 n'introduit pas de nouvelle représentation visuelle.
Contrairement à Processing ou à Protovis, le vocabulaire graphique de D3 provient
directement des standards web : HTML, SVG et CSS. Par exemple, vous pouvez
créer des éléments SVG en utilisant D3 et les styliser avec des feuilles de style
externes.
Vous pouvez utiliser des effets de fltre composites, des traits en pointillés et un
écrêtage. Si les fournisseurs de navigateurs introduisent de nouvelles
fonctionnalités demain, vous pourrez les utiliser immédiatement - aucune mise à
jour de la boîte à outils requise.
Et, si vous décidez à l'avenir d'utiliser une boîte à outils autre que D3, vous pouvez
prendre votre connaissance des normes avec vous !
7
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
Mieux encore, D3 est facile à déboguer en utilisant l'inspecteur d'élément intégré
du navigateur : les nœuds que vous manipulez avec D3 sont exactement ceux que
le navigateur comprend nativement.
Transitions :
L'accent mis par D3 sur la transformation s'étend naturellement aux transitions
animées. Les transitions interpolent progressivement les styles et les attributs au fl
du temps.
Le tweening peut être contrôlé via des fonctions d'accélération telles que «
élastique », «cubic-in-out» et «linéaire».
Les interpolateurs de D3 prennent en charge les deux primitives, telles que les
nombres et les nombres incorporés dans les chaînes (tailles de police, données de
chemin, etc.) et les valeurs composées.
Vous pouvez même étendre le registre interpolateur de D3 pour prendre en charge
les propriétés complexes et les structures de données.
Par exemple, pour fondu l'arrière-plan de la page en noir :
d3.select("body").transition() .style("background-color", "black");
Ou, pour redimensionner des cercles dans une carte de symboles avec un décalage
décalé :
d3.selectAll("circle").transition()
.duration(750)
.delay(function(d, i) { return i * 10; })
.attr("r", function(d) { return Math.sqrt(d * scale); });
En modifant uniquement les attributs qui changent réellement, D3 réduit les frais
généraux et permet une plus grande complexité graphique à des fréquences
d'images élevées.
8
Mohamed BOUHAMED DSI GROUP Mai 2018
Copy Right © DSI GROUP
D3 permet également le séquençage de transitions complexes via des événements.
Et, vous pouvez toujours utiliser les transitions CSS3, D3 ne remplace pas la boîte à
outils du navigateur, mais l'expose d'une manière plus facile à utiliser.
9
Mohamed BOUHAMED DSI GROUP Mai 2018

Contenu connexe

Similaire à D3 js-last

Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) univalence
 
cours base de données
cours base de donnéescours base de données
cours base de donnéesYassine Badri
 
Looker Studio - trucs et astuces pour améliorer ses dashboards
Looker Studio - trucs et astuces pour améliorer ses dashboardsLooker Studio - trucs et astuces pour améliorer ses dashboards
Looker Studio - trucs et astuces pour améliorer ses dashboardsMadeline Pinthon
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
3D_Partfinder - identification automatique des modèles imprimable en 3D
3D_Partfinder - identification automatique des modèles imprimable en 3D3D_Partfinder - identification automatique des modèles imprimable en 3D
3D_Partfinder - identification automatique des modèles imprimable en 3DCORETECHNOLOGIE
 
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation BootstrapTelecomValley
 
7. information modelling
7. information modelling7. information modelling
7. information modellingsugogo
 
Infrastructure - Monitoring - Cacti
Infrastructure - Monitoring - CactiInfrastructure - Monitoring - Cacti
Infrastructure - Monitoring - CactiFrédéric FAURE
 
Ritme data solutions : Plateforme Data Science COsMO
Ritme data solutions : Plateforme Data Science COsMORitme data solutions : Plateforme Data Science COsMO
Ritme data solutions : Plateforme Data Science COsMOAurélien Adamo
 
Datastudio : du basique au connecteur TEKNSEO 2018
Datastudio : du basique au connecteur TEKNSEO 2018Datastudio : du basique au connecteur TEKNSEO 2018
Datastudio : du basique au connecteur TEKNSEO 2018Vincent Lahaye
 
Angluars js
Angluars jsAngluars js
Angluars jsRYMAA
 
Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1
Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1
Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1CERTyou Formation
 
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuXebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuPublicis Sapient Engineering
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetAmine Chkr
 
6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals
6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals
6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentalsCERTyou Formation
 

Similaire à D3 js-last (20)

Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
cours base de données
cours base de donnéescours base de données
cours base de données
 
Looker Studio - trucs et astuces pour améliorer ses dashboards
Looker Studio - trucs et astuces pour améliorer ses dashboardsLooker Studio - trucs et astuces pour améliorer ses dashboards
Looker Studio - trucs et astuces pour améliorer ses dashboards
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
3D_Partfinder - identification automatique des modèles imprimable en 3D
3D_Partfinder - identification automatique des modèles imprimable en 3D3D_Partfinder - identification automatique des modèles imprimable en 3D
3D_Partfinder - identification automatique des modèles imprimable en 3D
 
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap2014.12.11 - TECH CONF #3 - Présentation Bootstrap
2014.12.11 - TECH CONF #3 - Présentation Bootstrap
 
7. information modelling
7. information modelling7. information modelling
7. information modelling
 
Infrastructure - Monitoring - Cacti
Infrastructure - Monitoring - CactiInfrastructure - Monitoring - Cacti
Infrastructure - Monitoring - Cacti
 
Ritme data solutions : Plateforme Data Science COsMO
Ritme data solutions : Plateforme Data Science COsMORitme data solutions : Plateforme Data Science COsMO
Ritme data solutions : Plateforme Data Science COsMO
 
Datastudio : du basique au connecteur TEKNSEO 2018
Datastudio : du basique au connecteur TEKNSEO 2018Datastudio : du basique au connecteur TEKNSEO 2018
Datastudio : du basique au connecteur TEKNSEO 2018
 
HTML5 en Entreprise
HTML5 en EntrepriseHTML5 en Entreprise
HTML5 en Entreprise
 
Angluars js
Angluars jsAngluars js
Angluars js
 
Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1
Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1
Km402 g formation-ibm-infosphere-advanced-datastage-parallel-framework-v9-1
 
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic LadeuXebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
XebiCon'17 : Entrevue avec Vue.js - Thomas Champion et Ludovic Ladeu
 
Cours 01.pptx
Cours 01.pptxCours 01.pptx
Cours 01.pptx
 
X-2E Analysis - FR
X-2E Analysis - FRX-2E Analysis - FR
X-2E Analysis - FR
 
U M L Analyse Et Conception Objet
U M L Analyse Et Conception ObjetU M L Analyse Et Conception Objet
U M L Analyse Et Conception Objet
 
Uml
UmlUml
Uml
 
6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals
6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals
6 t130g formation-ibm-websphere-transformation-extender-v8-3-fundamentals
 
Dijkstra kshortest
Dijkstra kshortestDijkstra kshortest
Dijkstra kshortest
 

Plus de TECOS

Bouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecosBouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecosTECOS
 
Summer internship
Summer internshipSummer internship
Summer internshipTECOS
 
Mohamed bouhamed - ccna2
Mohamed bouhamed  - ccna2Mohamed bouhamed  - ccna2
Mohamed bouhamed - ccna2TECOS
 
Mohamed bouhamed - ccna1
Mohamed bouhamed  -  ccna1Mohamed bouhamed  -  ccna1
Mohamed bouhamed - ccna1TECOS
 
Mobile certified
Mobile certifiedMobile certified
Mobile certifiedTECOS
 
Analytics certified
Analytics certifiedAnalytics certified
Analytics certifiedTECOS
 
Ad words certified
Ad words certifiedAd words certified
Ad words certifiedTECOS
 
Télémétrie d’openstack
Télémétrie d’openstackTélémétrie d’openstack
Télémétrie d’openstackTECOS
 
cloudu certification
cloudu certificationcloudu certification
cloudu certificationTECOS
 
Internship report
Internship reportInternship report
Internship reportTECOS
 
Gsm presntation
Gsm presntationGsm presntation
Gsm presntationTECOS
 
Td gsm iit
Td gsm iitTd gsm iit
Td gsm iitTECOS
 
Complément réseaux informatiques
Complément réseaux informatiquesComplément réseaux informatiques
Complément réseaux informatiquesTECOS
 
Cours réseauxs gsm
Cours réseauxs gsmCours réseauxs gsm
Cours réseauxs gsmTECOS
 
Cours sécurité 2_asr
Cours sécurité 2_asrCours sécurité 2_asr
Cours sécurité 2_asrTECOS
 
chapitre 1
chapitre 1chapitre 1
chapitre 1TECOS
 
Serveur web iit_asr_p2i
Serveur web iit_asr_p2iServeur web iit_asr_p2i
Serveur web iit_asr_p2iTECOS
 
Examen
Examen Examen
Examen TECOS
 
04 programmation mobile - android - (db, receivers, services...)
04 programmation mobile - android - (db, receivers, services...)04 programmation mobile - android - (db, receivers, services...)
04 programmation mobile - android - (db, receivers, services...)TECOS
 

Plus de TECOS (20)

Bouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecosBouhamed vuejs-meetup-tecos
Bouhamed vuejs-meetup-tecos
 
Mta
MtaMta
Mta
 
Summer internship
Summer internshipSummer internship
Summer internship
 
Mohamed bouhamed - ccna2
Mohamed bouhamed  - ccna2Mohamed bouhamed  - ccna2
Mohamed bouhamed - ccna2
 
Mohamed bouhamed - ccna1
Mohamed bouhamed  -  ccna1Mohamed bouhamed  -  ccna1
Mohamed bouhamed - ccna1
 
Mobile certified
Mobile certifiedMobile certified
Mobile certified
 
Analytics certified
Analytics certifiedAnalytics certified
Analytics certified
 
Ad words certified
Ad words certifiedAd words certified
Ad words certified
 
Télémétrie d’openstack
Télémétrie d’openstackTélémétrie d’openstack
Télémétrie d’openstack
 
cloudu certification
cloudu certificationcloudu certification
cloudu certification
 
Internship report
Internship reportInternship report
Internship report
 
Gsm presntation
Gsm presntationGsm presntation
Gsm presntation
 
Td gsm iit
Td gsm iitTd gsm iit
Td gsm iit
 
Complément réseaux informatiques
Complément réseaux informatiquesComplément réseaux informatiques
Complément réseaux informatiques
 
Cours réseauxs gsm
Cours réseauxs gsmCours réseauxs gsm
Cours réseauxs gsm
 
Cours sécurité 2_asr
Cours sécurité 2_asrCours sécurité 2_asr
Cours sécurité 2_asr
 
chapitre 1
chapitre 1chapitre 1
chapitre 1
 
Serveur web iit_asr_p2i
Serveur web iit_asr_p2iServeur web iit_asr_p2i
Serveur web iit_asr_p2i
 
Examen
Examen Examen
Examen
 
04 programmation mobile - android - (db, receivers, services...)
04 programmation mobile - android - (db, receivers, services...)04 programmation mobile - android - (db, receivers, services...)
04 programmation mobile - android - (db, receivers, services...)
 

D3 js-last

  • 1. Copy Right © DSI GROUP D3.js Récapitulatifs des Fonctionnalités MOHAMED BOUHAMED COPY RIGHT @ DSI GROUP 1 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 2. Copy Right © DSI GROUP Table des matières Qu'est-ce que D3.js :...................................................................................................3 Introduction.................................................................................................................3 Exemple et Fonctionnalités :.......................................................................................3 Sélections :..............................................................................................................3 Propriétés dynamiques :..........................................................................................4 Les entrées sorties :.................................................................................................6 Transformation non représentative :.......................................................................7 Transitions :.............................................................................................................8 2 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 3. Copy Right © DSI GROUP Data-Driven Documentations Qu'est-ce que D3.js : D3.js est une bibliothèque JavaScript pour manipuler des documents basés sur des données. D3 vous aide à donner vie aux données en utilisant HTML5, SVG et CSS. L'accent mis par D3 sur les standards web vous donne toutes les capacités des navigateurs modernes sans vous attacher à un framework propriétaire, combinant de puissants composants de visualisation et une approche basée sur les données pour la manipulation DOM ('Document Object Model : La structure d'une page web'). Introduction D3 vous permet de lier des données arbitraires à un DOM (Document Object Model), puis d'appliquer des transformations pilotées par les données au document. Par exemple, vous pouvez utiliser D3 pour générer une table HTML à partir d'un tableau de nombres. Ou, utilisez les mêmes données pour créer un graphique à barres SVG ('sequel graphic visualisation') interactif avec des transitions et des interactions en douceur. D3 une manipulation efficace des documents basés sur les données. Cela évite la représentation propriétaire et offre une flexibilité extraordinaire, exposant toutes les fonctionnalités des standards Web tels que HTML, SVG et CSS. Avec un minimum de frais généraux, D3 est extrêmement rapide, prenant en charge de grands ensembles de données et des comportements dynamiques pour l'interaction et l'animation. Le style fonctionnel de D3 permet la réutilisation de code à travers une collection diverse de modules officiels et développés par la communauté. Exemple et Fonctionnalités : Sélections : La modification de documents à l'aide de l'API DOM du W3C est fastidieuse : les noms de méthodes sont verbeux, et l'approche impérative requiert une itération manuelle et une comptabilité de l'état temporaire. Par exemple, pour modifier la couleur du texte des éléments de paragraphe. 3 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 4. Copy Right © DSI GROUP var paragraphs = document.getElementsByTagName("p"); for (var i = 0; i < paragraphs.length; i++) { var paragraph = paragraphs.item(i); paragraph.style.setProperty("color", "white", null); } D3 utilise une approche déclarative, opérant sur des ensembles arbitraires de nœuds appelés sélections. Par exemple, vous pouvez réécrire la boucle ci-dessus comme suit : d3.selectAll("p").style("color", "white"); Pourtant, vous pouvez toujours manipuler des nœuds individuels au besoin : d3.select("body").style("background-color", "black"); Les sélecteurs sont défnis par l'API W3C Selectors et pris en charge de manière native par les navigateurs modernes. Les exemples ci-dessus sélectionnent les noeuds par nom de tag ("p" et "body", respectivement). Les éléments peuvent être sélectionnés en utilisant une variété de prédicats, y compris le confnement, les valeurs d'attribut, la classe et l'ID. D3 fournit de nombreuses méthodes pour la mutation de nœuds : défnition d'attributs ou de styles enregistrement d'auditeurs d’événements ajouter, supprimer ou trier des nœuds, et changer le contenu HTML ou texte. Ceux-ci suffisent pour la grande majorité des besoins. L'accès direct au DOM sous-jacent est également possible, car chaque sélection D3 est simplement un tableau de nœuds. Propriétés dynamiques : Les lecteurs familiers avec d'autres frameworks DOM tels que jQuery doivent immédiatement reconnaître les similitudes avec D3. 4 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 5. Copy Right © DSI GROUP Pourtant, les styles, attributs et autres propriétés peuvent être spécifés en tant que fonctions de données dans D3, et pas seulement des constantes simples. Malgré leur apparente simplicité, ces fonctions peuvent être étonnamment puissantes, La fonction d3.geoPath, par exemple, projette des coordonnées géographiques dans des données de chemin SVG. D3 fournit de nombreuses fonctions réutilisables intégrées et des fabriques de fonctions, telles que des primitives graphiques pour les diagrammes à secteurs, linéaires et sectoriels. Par exemple, pour colorier aléatoirement des paragraphes : d3.selectAll("p").style("color", function() { return "hsl(" + Math.random() * 360 + ",100%,50%)"; }); Pour alterner les nuances de gris pour les nœuds pairs et impairs : d3.selectAll("p").style("color", function(d, i) { return i % 2 ? "#fff" : "#eee"; }); Les propriétés calculées font souvent référence à des données liées. Les données sont spécifées sous la forme d'un tableau de valeurs et chaque valeur est transmise en tant que premier argument (d) aux fonctions de sélection. Avec l'index de jointure par défaut, le premier élément du tableau de données est transmis au premier nœud de la sélection, le deuxième élément au second nœud, etc. Par exemple, si vous liez un tableau de nombres à des éléments de paragraphe, vous pouvez utiliser ces nombres pour calculer des tailles de polices dynamiques : d3.selectAll("p") .data([4, 8, 15, 16, 23, 42]) .style("font-size", function(d) { return d + "px"; }); 5 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 6. Copy Right © DSI GROUP Une fois les données liées au document, vous pouvez omettre l'opérateur de données, D3 récupérera les données précédemment liées. Cela vous permet de recalculer les propriétés sans relier. Les entrées sorties : En utilisant les sélections d'entrée et de sortie de D3, vous pouvez créer de nouveaux noeuds pour les données entrantes et supprimer les noeuds sortants dont vous n'avez plus besoin. Lorsque les données sont liées à une sélection, chaque élément du tableau de données est associé au nœud correspondant de la sélection. S'il y a moins de nœuds que de données, les éléments de données supplémentaires forment la sélection d'entrée, que vous pouvez instancier en l'ajoutant à la sélection d'entrée. Par exemple : d3.select("body") .selectAll("p") .data([4, 8, 15, 16, 23, 42]) .enter().append("p") .text(function(d) { return "I’m number " + d + "!"; }); Les nœuds de mise à jour sont la sélection par défaut, le résultat de l'opérateur de données. Ainsi, si vous oubliez les sélections d'entrée et de sortie, vous ne sélectionnez automatiquement que les éléments pour lesquels il existe des données correspondantes. Un modèle commun consiste à décomposer la sélection initiale en trois parties : les nœuds de mise à jour à modifer, les nœuds entrants à ajouter et les nœuds sortants à supprimer. // Update… var p = d3.select("body") .selectAll("p") 6 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 7. Copy Right © DSI GROUP .data([4, 8, 15, 16, 23, 42]) .text(function(d) { return d; }); // Enter… p.enter().append("p") .text(function(d) { return d; }); // Exit… P.exit().remove(); En gérant ces trois cas séparément, vous spécifez précisément quelles opérations s'exécutent sur quels noeuds. Cela améliore les performances et offre un meilleur contrôle sur les transitions. Par exemple, avec un graphique à barres, vous pouvez initialiser l'entrée de barres à l'aide de l'ancienne échelle, puis faire la transition entre les barres de la nouvelle échelle et les barres de mise à jour et de sortie. D3 vous permet de transformer des documents en fonction des données, cela inclut à la fois la création et la destruction d'éléments. D3 vous permet de modifer un document existant en réponse à une interaction de l'utilisateur, une animation au fl du temps ou même une notifcation asynchrone d'un tiers. Une approche hybride est même possible, où le document est initialement rendu sur le serveur, et mis à jour sur le client via D3. Transformation non représentative : D3 n'introduit pas de nouvelle représentation visuelle. Contrairement à Processing ou à Protovis, le vocabulaire graphique de D3 provient directement des standards web : HTML, SVG et CSS. Par exemple, vous pouvez créer des éléments SVG en utilisant D3 et les styliser avec des feuilles de style externes. Vous pouvez utiliser des effets de fltre composites, des traits en pointillés et un écrêtage. Si les fournisseurs de navigateurs introduisent de nouvelles fonctionnalités demain, vous pourrez les utiliser immédiatement - aucune mise à jour de la boîte à outils requise. Et, si vous décidez à l'avenir d'utiliser une boîte à outils autre que D3, vous pouvez prendre votre connaissance des normes avec vous ! 7 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 8. Copy Right © DSI GROUP Mieux encore, D3 est facile à déboguer en utilisant l'inspecteur d'élément intégré du navigateur : les nœuds que vous manipulez avec D3 sont exactement ceux que le navigateur comprend nativement. Transitions : L'accent mis par D3 sur la transformation s'étend naturellement aux transitions animées. Les transitions interpolent progressivement les styles et les attributs au fl du temps. Le tweening peut être contrôlé via des fonctions d'accélération telles que « élastique », «cubic-in-out» et «linéaire». Les interpolateurs de D3 prennent en charge les deux primitives, telles que les nombres et les nombres incorporés dans les chaînes (tailles de police, données de chemin, etc.) et les valeurs composées. Vous pouvez même étendre le registre interpolateur de D3 pour prendre en charge les propriétés complexes et les structures de données. Par exemple, pour fondu l'arrière-plan de la page en noir : d3.select("body").transition() .style("background-color", "black"); Ou, pour redimensionner des cercles dans une carte de symboles avec un décalage décalé : d3.selectAll("circle").transition() .duration(750) .delay(function(d, i) { return i * 10; }) .attr("r", function(d) { return Math.sqrt(d * scale); }); En modifant uniquement les attributs qui changent réellement, D3 réduit les frais généraux et permet une plus grande complexité graphique à des fréquences d'images élevées. 8 Mohamed BOUHAMED DSI GROUP Mai 2018
  • 9. Copy Right © DSI GROUP D3 permet également le séquençage de transitions complexes via des événements. Et, vous pouvez toujours utiliser les transitions CSS3, D3 ne remplace pas la boîte à outils du navigateur, mais l'expose d'une manière plus facile à utiliser. 9 Mohamed BOUHAMED DSI GROUP Mai 2018