Antoine Béland
9 octobre 2018
Pour l'atelier, nous utiliserons la version 5 de D3.js.
Treemap Mike Bostock, 2018
Navettage à partir du lieu de résidence au lieu de travail Antoine Béland, 2017
Population Choropleth Mike Bostock, 2016
<!DOCTYPE html>
<html>
<body>
<h1>Le titre de ma page</h1>
<p>Un <strong>paragraphe</strong> associé à ma page.</p>
</body>
</html>
Démo
Différence conceptuelle entre les images matricielles et vectorielles Yug, 2011 | CC BY-SA 2.5
<svg width="300" height="200">
<!-- Un rectangle -->
<rect width="100" height="80" x="0" y="70" fill="green"/>
<!-- Une ligne -->
<line x1="5" y1="5" x2="250" y2="95" stroke="red"/>
<!-- Un cercle -->
<circle cx="90" cy="80" r="50" fill="blue"/>
<!-- Un texte -->
<text x="180" y="60">Un texte</text>
</svg>
Démo
Durant l'atelier, nous utiliserons principalement:
fill
: couleur de remplissageheight
: hauteur d'un élémentstroke
: couleur de la bordurestroke-width
: taille de la bordurewidth
: largeur d'un élémentPour appliquer un style, il faut utiliser un sélecteur:
element
: applique un style à tous les éléments sélectionnés.classe
: applique un style à tous les éléments ayant la classe sélectionnée#identifiant
: applique un style à l'élément ayant l'identifiant sélectionné
line {
stroke: green;
stroke-width: 4px;
}
.rouge {
fill: red;
}
#rectangle {
fill: yellow;
stroke: blue;
stroke-width: 5px;
}
Démo
var variable = 1; // Déclaration d'une variable
var liste = [ 1, 2, 3, 4, 5 ]; // Déclaration d'une liste
var obj = { // Déclaration d'un objet
prenom: 'Antoine',
nom: 'Béland'
};
function fct1() { /* ... */ } // Déclaration d'une fonction
const fct2 = () => {} // Déclaration d'une fonction
if (variable === 1) { // Condition
console.log('OUI');
}
Démo
console.log
)d3
d3.fonction1()
.fonction2()
.fonction3();
d3.select
ou la
fonction d3.selectAll
d3.select('line')
.attr('x1', 50) // Modification de la position X1
.attr('y1', 150) // Modification de la position Y1
.style('stroke', 'purple'); // Modification de la couleur
Démo
d3.selectAll('.rouge')
.style('fill', 'gray'); // Modification de la couleur
Démo
append
pour créer un nouvel élément dans l'élément sélectionné
d3.select('svg')
.append('rect') // Création d'un rectangle
.attr('x', 10)
.attr('y', 10)
.attr('width', 50)
.attr('height', 50)
.style('fill', 'red');
Démo
data
sur une sélection multiple pour y associer un tableau de données
const svg = d3.select('svg'); // Élément de base
svg.selectAll('rect') // Sélection multiple
.data([ 15, 8, 42, 4 ]) // Association des données
.enter() // Doit créer de nouveaux éléments
.append('rect'); // Création d'un rectangle
.attr('width', d => d); // Utilise les données courantes
const data = [ 100, 50, 75 ];
d3.select('svg')
.selectAll('rect') // Sélection multiple
.data(data) // Association des données
.enter()
.append('rect')
.attr('x', (d, i) => i * 50) // i représente l'index courant
.attr('y', d => 100 - d)
.attr('width', 50)
.attr('height', d => d)
.style('fill', 'red');
Démo
on
pour y associer un évènement particulierclick
: survient lorsque l'élément est cliquémouseenter
: survient lorsque la souris vient de commencer à survolé l'élémentmouseleave
: survient lorsque la souris vient de finir de survoler l'élément
const colors = [ 'yellow', 'blue', 'green' ];
d3.select('svg')
.selectAll('rect')
.data([ 100, 50, 75 ])
.enter()
.append('rect')
.attr('x', (d, i) => i * 50)
.attr('y', d => 100 - d)
.attr('width', 50)
.attr('height', d => d)
.style('fill', 'red')
.on('click', (d, i, elements) => {
d3.select(elements[i]).style('fill', colors[i]);
});
Démo