JavaScript Graphiques : Un Voyage de Débutant dans la Programmation Visuelle

Bonjour là-bas, aspirant programmeur ! Je suis ravi de vous guider dans ce voyage passionnant vers le monde des graphiques JavaScript. En tant que quelqu'un qui enseigne l'informatique depuis plus d'une décennie, je peux vous dire que la programmation graphique est l'un des aspects les plus récompensants et amusants du codage. Alors, mettons nos manches à la pâte et plongons dedans !

JavaScript - Graphics

Introduction aux Graphiques JavaScript

Avant d'explorer des bibliothèques et des outils spécifiques, comprenons pourquoi les graphiques en JavaScript sont si importants. Imaginez un monde où tous les sites Web ne seraient que du texte brut - ennuyeux, non ? Les graphiques donnent vie à nos expériences numériques, les rendant plus engageantes, informatives et parfois même magiques !

WebGL : La Puissance du 3D dans Votre Navigateur

Qu'est-ce que WebGL ?

WebGL (Web Graphics Library) est une API JavaScript qui nous permet de rendre des graphiques 2D et 3D hautes performances dans les navigateurs Web. C'est comme avoir un mini-studio de cinéma droit dans votre page Web !

Votre Premier Programme WebGL

Commençons par un exemple simple. Nous allons créer un triangle rouge sur un canevas :

<canvas id="myCanvas" width="400" height="300"></canvas>
<script>
// Obtenez l'élément canevas
var canvas = document.getElementById('myCanvas');
var gl = canvas.getContext('webgl');

// Définir le shader de sommet
var vertexShaderSource = `
attribute vec4 a_position;
void main() {
gl_Position = a_position;
}
`;

// Définir le shader de fragment
var fragmentShaderSource = `
precision mediump float;
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
`;

// Créer les shaders
var vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vertexShaderSource);
gl.compileShader(vertexShader);

var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragmentShader, fragmentShaderSource);
gl.compileShader(fragmentShader);

// Créer le programme
var program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);

// Utiliser le programme
gl.useProgram(program);

// Créer le tampon
var positionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);

// Définir la géométrie
var positions = [
0.0,  0.5,
-0.5, -0.5,
0.5, -0.5
];
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);

// Définir l'attribut
var positionAttributeLocation = gl.getAttribLocation(program, "a_position");
gl.enableVertexAttribArray(positionAttributeLocation);
gl.vertexAttribPointer(positionAttributeLocation, 2, gl.FLOAT, false, 0, 0);

// Dessiner
gl.drawArrays(gl.TRIANGLES, 0, 3);
</script>

Whaou, c'est beaucoup à ingurgiter ! Breakons-le :

  1. Nous commençons par créer un élément canevas et obtenir son contexte WebGL.
  2. Nous définissons deux shaders : un shader de sommet (qui positionne notre triangle) et un shader de fragment (qui le colore en rouge).
  3. Nous créons un programme en utilisant ces shaders.
  4. Nous créons un tampon pour stocker les positions des sommets de notre triangle.
  5. Enfin, nous dessinons le triangle.

Ne vous inquiétez pas si cela semble complexe - WebGL est puissant mais a une courbe d'apprentissage abrupte. Au fur et à mesure que nous progressons, vous vous sentirez plus à l'aise avec ces concepts.

P5.js : Le Codage Créatif Rendu Facile

Qu'est-ce que P5.js ?

P5.js est une bibliothèque JavaScript qui rend la création de contenu visuel un jeu d'enfant. C'est parfait pour les débutants comme pour les artistes !

Dessiner des Formes avec P5.js

Drawons un visage simple en utilisant P5.js :

<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.js"></script>
<script>
function setup() {
createCanvas(400, 400);
}

function draw() {
background(220);

// Visage
fill(255, 220, 180);
ellipse(200, 200, 300, 300);

// Yeux
fill(0);
ellipse(150, 150, 50, 50);
ellipse(250, 150, 50, 50);

// Bouche
noFill();
stroke(0);
arc(200, 250, 100, 50, 0, PI);
}
</script>

Ce code crée un canevas, dessine un cercle pour le visage, deux petits cercles pour les yeux, et un arc pour le sourire. P5.js utilise une fonction setup() pour initialiser le canevas et une fonction draw() qui s'exécute continuellement pour mettre à jour le dessin.

Plotly.js : La Visualisation des Données Rendue Beautiful

Qu'est-ce que Plotly.js ?

Plotly.js est une bibliothèque de graphiques de haut niveau qui vous permet de créer des graphiques et des graphes interactifs magnifiques.

Créer un Graphique à Barres

Drawons un graphique à barres simple montrant les préférences fruitées :

<div id="myPlot"></div>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<script>
var data = [{
x: [' Pommes ', ' Bananes ', ' Oranges '],
y: [20, 14, 23],
type: 'bar'
}];

var layout = {
title: 'Préférences Fruitées',
xaxis: {title: 'Fruit'},
yaxis: {title: 'Nombre de Votes'}
};

Plotly.newPlot('myPlot', data, layout);
</script>

Ce code crée un graphique à barres avec trois barres représentant les votes pour différents fruits. Plotly.js s'occupe de tout le rendu complexe pour nous !

Chart.js : Graphiques Simples mais Puissants

Qu'est-ce que Chart.js ?

Chart.js est une autre bibliothèque de graphiques populaire connue pour sa simplicité et ses graphiques réactifs.

Créer un Graphique en Camembert

Drawons un graphique en camembert montrant la répartition des activités journalières d'une personne :

<canvas id="myChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: ['Sommeil', 'Travail', 'Loisirs', 'Repas', 'Autre'],
datasets: [{
data: [8, 8, 4, 2, 2],
backgroundColor: [
'rgba(255, 99, 132, 0.8)',
'rgba(54, 162, 235, 0.8)',
'rgba(255, 206, 86, 0.8)',
'rgba(75, 192, 192, 0.8)',
'rgba(153, 102, 255, 0.8)'
]
}]
},
options: {
title: {
display: true,
text: 'Activités Journalières'
}
}
});
</script>

Ce code crée un graphique en camembert coloré montrant comment une personne passe ses 24 heures dans une journée. Chart.js s'occupe des calculs et du rendu pour nous.

Google Charts : Soutenu par l'Infrastructure Puissante de Google

Qu'est-ce que Google Charts ?

Google Charts est une bibliothèque de graphiques puissante qui utilise l'infrastructure de Google pour créer des graphiques rapides et interactifs.

Créer un Graphique en Ligne

Drawons un graphique en ligne montrant les ventes d'une entreprise au fil du temps :

<div id="chart_div"></div>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
var data = google.visualization.arrayToDataTable([
['Année', 'Ventes'],
['2018',  1000],
['2019',  1170],
['2020',  660],
['2021',  1030]
]);

var options = {
title: 'Performance de l\'Entreprise',
curveType: 'function',
legend: { position: 'bottom' }
};

var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>

Ce code crée un graphique en ligne lisse montrant les chiffres d'affaires sur quatre ans. Google Charts offre une large gamme de types de graphiques et d'options de personnalisation.

Conclusion

Félicitations ! Vous avez刚刚迈出了进入JavaScript图形世界的第一步。我们涵盖了从WebGL的低级功率到Chart.js的简单性。记住,掌握这些库的关键是练习。所以,不要害怕实验并创建您自己的可视化!

以下是我们在本文中讨论的库的总结表:

Bibliothèque Cas d'Utilisation Principal Niveau de Difficulté
WebGL Graphiques 3D, développement de jeux Avancé
P5.js Codage créatif, projets artistiques Débutant
Plotly.js Graphiques scientifiques et statistiques Intermédiaire
Chart.js Graphiques simples, réactifs Débutant
Google Charts Large variété de graphiques, intégration Google Intermédiaire

Continuez à coder, continuez à créer, et surtout, amusez-vous ! Le monde des graphiques vous appartient, et JavaScript est votre perle. Bon codage !

Credits: Image by storyset