AFFAIRE Introduction

On pourra utiliser la programmation dite lettrée (“literate programming”), qui est une programmation didactique qui vise à expliciter et expliquer ce que font les programmes, comme Knuth (1984) le décrit (repris dans le chapitre 4 de Knuth (1992)):

Changeons notre approche traditionnelle de la conception de programmes : au lieu d’imaginer que notre tâche principale consiste à dire à un ordinateur ce qu’il doit faire, concentrons-nous plutôt sur l’explication aux êtres humains de ce que nous voulons qu’un ordinateur fasse.

Objectifs

Moyens - Langages - Outils (bibliothèques pour la création de graphiques mathématiques)

Installations

Les textes ci-dessous ont été engendrés par deepseek, soit 深度求索 (Shēndù Qiúsuǒ), qu’on peut traduire ainsi :

  • 深度 (shēndù) : profondeur (au sens intellectuel ou technique),
  • 求索 (qiúsuǒ) : chercher, explorer, poursuivre une quête.

→ “Explorer en profondeur”, soit DeepSeek (深度求索 étant la traduction officielle chinoise de la marque).

Quarto : vers la programmation didactique

Installer et tester l’installation de Quarto.

📚 Quarto : La programmation lettrée accessible au lycéen

Quarto est un outil magique qui te permet de créer des documents intelligents en mélangeant du texte, du code et des résultats dans un seul fichier. Imagine écrire un compte-rendu de TP où :

  1. *les explications** (en Markdown simple) 📝
  2. le code (Python, R, ou même Java) 💻
  3. les résultats (graphiques, tableaux, calculs) 📊

s’assemblent automatiquement en un seul document propre (PDF, site web, diaporama).

✨ C’est comme si ton cahier devenait vivant : quand tu modifies le code, les graphiques se mettent à jour tout seuls !

Parfait pour :

  • les rapports scientifiques (physique, maths),
  • les présentations interactives,
  • les portfolios de programmation.

👉 Avec Quarto, tu racontes une histoire avec du code, et l’ordinateur t’aide à la mettre en page !

➡️ Découvrir Quarto

Création de graphiques avec Java - L’espace des possibles

Il existe plusieurs bibliothèques Java offrant des fonctionnalités similaires à Matplotlib (Python) pour la création de graphiques et la visualisation de données. En voici quelques-unes des plus populaires.


📊 JFreeChart

  • Équivalent le plus proche : Bibliothèque open-source mature et largement utilisée.

  • Fonctionnalités :

    • Graphiques 2D (courbes, barres, secteurs, histogrammes, nuages de points).
    • Interactivité (zoom, tooltips).
    • Export en PNG, JPEG, SVG, PDF.
  • Exemple d’utilisation :

    Dataset dataset = ...; // Création des données
    JFreeChart chart = ChartFactory.createLineChart("Titre", "X", "Y", dataset);
    ChartFrame frame = new ChartFrame("Graphique", chart);
    frame.pack();
    frame.setVisible(true);

📊 XChart

  • Avantage : Légère, intuitive et conçue pour une intégration rapide.

  • Fonctionnalités :

    • Types de graphiques variés (lignes, barres, aires, histogrammes, etc.).
    • Style personnalisable (couleurs, polices).
    • Export SVG/PNG et génération de HTML interactif.
  • Exemple :

    CategoryChart chart = new CategoryChartBuilder().build();
    chart.addSeries("Série 1", xData, yData);
    new SwingWrapper<>(chart).displayChart();

📊 JavaFX Chart API (Intégré à JavaFX)

  • Idéal pour : Applications desktop modernes.

  • Types inclus :

    • LineChart, BarChart, PieChart, ScatterChart, AreaChart.
  • Avantage : Animations fluides et rendu vectoriel.

  • Exemple :

    LineChart<Number, Number> chart = new LineChart<>(xAxis, yAxis);
    XYChart.Series series = new XYChart.Series();
    series.getData().add(new XYChart.Data(1, 10));
    chart.getData().add(series);

📊 Orson Charts (Commercial avec version gratuite)

  • Points forts :
    • Graphiques 3D (surfaces, nuages de points).
    • Rendus haute qualité.
    • Compatible avec Swing/JavaFX.

📊 Jzy3d

  • Spécialisation : Visualisation 3D interactive (similaire à mplot3d de Matplotlib).
  • Fonctionnalités : Surfaces, nuages de points 3D, couleurs interpolées.

📊 Tablesaw

  • Focus : Analyse de données + visualisation (inspiré par pandas + matplotlib).
  • Graphiques : Lignes, barres, histogrammes via tech.tablesaw.plotly.
  • Export : Graphiques interactifs au format HTML (utilisant Plotly).

Comparatif rapide

Bibliothèque 2D 3D Interactivité Export HTML Intégration UI
JFreeChart Swing
XChart Swing/JavaFX
JavaFX Charts JavaFX
Jzy3d Swing
Tablesaw Browser

Recommandation

  • Pour un équivalent direct à Matplotlib : JFreeChart (pour sa maturité).
  • Pour des graphiques interactifs simples : XChart.
  • Pour une application JavaFX : utilisez l’API JavaFX Chart.
  • Pour des visualisations 3D : Jzy3d.

Toutes ces bibliothèques sont bien documentées avec des exemples disponibles sur GitHub ou leurs sites officiels.

Notre choix : XChart dans VSCodium

Pour utiliser XChart dans VSCodium, suivez ces étapes :


Configuration du projet (Maven)

Ajoutez la dépendance XChart dans votre pom.xml :

<dependencies>
    <dependency>
        <groupId>org.knowm.xchart</groupId>
        <artifactId>xchart</artifactId>
        <version>3.8.6</version> <!-- Vérifiez la dernière version sur Maven Central -->
    </dependency>
</dependencies>

Exemple de code simple

Créez un fichier Main.java :

import org.knowm.xchart.CategoryChart;
import org.knowm.xchart.CategoryChartBuilder;
import org.knowm.xchart.SwingWrapper;
import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 1. Créer des données
        var xData = Arrays.asList("A", "B", "C", "D");
        var yData = Arrays.asList(4, 6, 3, 8);

        // 2. Initialiser le graphique
        CategoryChart chart = new CategoryChartBuilder()
                .width(800)
                .height(600)
                .title("Exemple XChart")
                .xAxisTitle("Catégories")
                .yAxisTitle("Valeurs")
                .build();

        // 3. Ajouter les données
        chart.addSeries("Série 1", xData, yData);

        // 4. Afficher dans une fenêtre
        new SwingWrapper<>(chart).displayChart();
    }
}

Exécution avec VSCodium

  • Étape 1 : Ouvrez le dossier du projet dans VSCodium
  • Étape 2 : Compilez et exécutez avec Maven :
    1. Ouvrez le terminal intégré (`Ctrl + ``)

    2. Exécutez dans un shell :

      mvn clean compile exec:java -Dexec.mainClass="Main"

Exporter comme image (PNG)

Ajoutez ce code à la fin de main() pour sauvegarder le graphique :

import org.knowm.xchart.BitmapEncoder;
import java.io.IOException;

// ...
try {
    BitmapEncoder.saveBitmap(chart, "./mon-graphique", BitmapEncoder.BitmapFormat.PNG);
} catch (IOException e) {
    e.printStackTrace();
}

Dépannage courant

  • Erreur “No valid Maven installation” :
    Installez Maven et configurez le chemin dans VSCodium (extension Maven for Java).
  • Erreur de dépendance :
    Exécutez mvn dependency:resolve dans le terminal.
  • Fenêtre graphique ne s’affiche pas :
    Vérifiez que vous utilisez SwingWrapper et que votre OS prend en charge Swing.

Personnalisation avancée

Modifiez les couleurs/styles :

chart.getStyler()
    .setSeriesColors(new Color[]{new Color(255, 0, 0)}) // Rouge
    .setPlotGridLinesVisible(false);

Documentation : XChart GitHub
Exemples complets : XChart Demo

Maven pour un débutant : Définition Simple

Maven est un outil qui t’aide à gérer ton projet Java comme un chef cuisinier gère sa recette 🧑‍🍳. Imagine que tu veuilles faire un gâteau (ton programme). Au lieu d’acheter les ingrédients un par un (bibliothèques), Maven les récupère automatiquement pour toi !


🔍 Analogie Lycée

Concept Maven Équivalent Lycée
pom.xml (fichier de configuration) Ta liste de courses 📝
Dépendances (bibliothèques) Les ingrédients du gâteau 🥚🍫
Maven Central (magasin en ligne) Le supermarché 🛒
Build (compilation) Cuire le gâteau au four 🔥

🛠 À quoi ça sert ?

  1. Télécharger automatiquement des bibliothèques (comme XChart)
  2. Compiler ton code en un clic
  3. Créer un fichier .JAR (exécutable)
  4. Gérer les versions des outils

💻 Installation Rapide (Windows/Mac)

  1. Télécharge Maven ici : https://maven.apache.org

  2. Dézippe le dossier

  3. Ajoute le chemin au PATH :

    • Windows : C:\chemin\vers\apache-maven-3.x\bin
    • Mac : /chemin/vers/apache-maven-3.x/bin
  4. Vérifie dans le terminal dans un shell :

    mvn --version

📁 Structure d’un Projet Maven

mon-projet/
├── src/
│   ├── main/
│   │   └── java/   <── TES FICHIERS JAVA (.java)
│   └── test/       (pour les tests)
└── pom.xml         <── FICHIER CLÉ ! ✨

✨ Le fichier pom.xml (Exemple Simplissime)

<project>
  <modelVersion>4.0.0</modelVersion>
  
  <!-- Carte d'identité du projet -->
  <groupId>fr.lycee</groupId>
  <artifactId>mon-projet</artifactId>
  <version>1.0</version>

  <!-- Ingrédients -->
  <dependencies>
    <dependency>
      <groupId>org.knowm.xchart</groupId>
      <artifactId>xchart</artifactId>
      <version>3.8.6</version>
    </dependency>
  </dependencies>
</project>

🚀 Commandes de Base à Connaître

Commande Effet Magique ✨
mvn compile Compile ton code
mvn exec:java Exécute le programme
mvn package Crée un .JAR exécutable
mvn clean Nettoie le projet (efface les .class)

Exemple pour lancer un programme :

mvn compile exec:java -Dexec.mainClass="fr.lycee.MonProgramme"

💡 Conseil de Pro

Dans VSCodium :
1. Installe l’extension “Extension Pack for Java”
2. Crée ton pom.xml
3. VS Code détectera automatiquement les dépendances !
4. Utilise les boutons ▶️ pour compiler/exécuter


🧩 Pourquoi c’est génial ?

  • Plus besoin de chercher les bibliothèques sur internet 🔍
  • Tous les membres du groupe utilisent les mêmes versions
  • Fonctionne sur tous les ordinateurs 💻

“Maven c’est comme un robot qui fait le sale boulot à ta place !” 🤖

Tu commences ? Je te conseille ce tutoriel vidéo simple 🎬