diff --git a/Analyse/rendu.md b/Analyse/rendu.md
index cd757f5e752a4569892b92f08c25fb9719f7464d..8c64e57f213818b9b2f77228145c4fe108184014 100644
--- a/Analyse/rendu.md
+++ b/Analyse/rendu.md
@@ -3,11 +3,11 @@
 
 ### Équipe H4
 
--  [ANTOINE Maxence](maxence.antoine.etu@univ-lille.fr)
--  [DEBUYSER Hugo](hugo.debuyser.etu@univ-lille.fr)
--  [DEKEISER Matisse](matisse.dekeiser.etu@univ-lille.fr)
--  [DESMONS Hugo](hugo.desmons.etu@univ-lille.fr)
--  [MENNECART Matias](matias.mennecart.etu@univ-lille.fr)
+-  [ANTOINE Maxence](mailto:maxence.antoine.etu@univ-lille.fr)
+-  [DEBUYSER Hugo](mailto:hugo.debuyser.etu@univ-lille.fr)
+-  [DEKEISER Matisse](mailto:matisse.dekeiser.etu@univ-lille.fr)
+-  [DESMONS Hugo](mailto:hugo.desmons.etu@univ-lille.fr)
+-  [MENNECART Matias](mailto:matias.mennecart.etu@univ-lille.fr)
 
 ___
 
@@ -32,12 +32,14 @@ ___
 
 ## Diagramme de cas d'utilisation
 
+Systeme: Application de classification de données
+
 ![Diagramme de cas d'utilisation](./ressources/DiagrammeUtilisation.png)
 
 ### Fiches descriptives
 
 #### Fiche descriptive: Utilisation du logiciel, Charger l'ensemble des données
-    
+
     Système: Logiciel de classification
     Cas d'utilisation: Charger l'ensemble des données
     
@@ -66,7 +68,7 @@ ___
     A)  4) Le système vérifie les données implémentées et renvoie une erreur à l'utilisateur.
 
 #### Fiche descriptive: Utilisation du logiciel, Ajouter une donnée
-    
+
     Système: Logiciel de classification
     
     Cas d'utilisation: Ajouter une donnée
@@ -116,17 +118,25 @@ ___
         1) L'utilisateur actionne le bouton "classifier les données".
         2) Le système classifie les points de façon aléatoire et modifie leurs couleurs en fonction de la classe choisis.
 
-*Inclure les fiches descriptives pour ces fonctionnalités:*
 
-- *Charger l'ensemble de données*
-- *Ajouter une donnée*
-- *Classifier la donnée non classifiée*
 
 ### Prototypes pour l'interface
 
-[Prototype figma](https://www.figma.com/design/J7CNIyIPHg0QBvoMKEAZ2L/Untitled?node-id=0-1&t=rzTi4oB0jeOOZTxv-1)
+Vous pouvez retrouver le [Prototype figma](https://www.figma.com/design/J7CNIyIPHg0QBvoMKEAZ2L/Untitled?node-id=0-1&t=rzTi4oB0jeOOZTxv-1) afin de tester une démonstration de la maquette de l'application.
+
+#### Interface principale
+
+La première page de l’interface se compose des éléments suivants :
+
+- **Nuage de points** : Pour l'instant vide, permettra d'afficher le nuage de points..
+
+- **Icône d'engrenage** :Située en haut à droite de la zone d’affichage permet d'accéder à un menu de paramètres pour configurer l'affichage.
 
-<img src="./ressources/MaquetteFigma.png" width="60%" height="60%" alt="Maquette Figma">
+- **Bouton charger des données** : Ce bouton ouvre une fenêtre qui permet à l’utilisateur d'importer un fichier contenant les données avec lesquelles il souhaite travailler.
+- **Bouton ajouter une donnée** : Cette option permet à l’utilisateur d’ajouter une donnée au nuage de point.
+- **Bouton classifier les données** : Ce bouton permet la classification des données non classifiées grâce a un algorithme (Pour le jalon 1, cette classification est aléatoire).
+
+---
 
 #### Interface principale
 
@@ -144,30 +154,27 @@ La première page de l’interface se compose des éléments suivants :
 
 <img src="./ressources/ChargerDonnées.png" width="60%" height="60%" alt="Charger les données">
 
-*Inclure des prototypes de l'interface utilisateur pour ces fonctionnalités:*
 
 #### Fenêtre de chargement de fichier
 
-  - **Nom fichier** : une zone texte où s’affichera le nom du fichier sélectionné après avoir utilisé le bouton "PARCOURIR".
-  - **Bouton "PARCOURIR"** : Ce bouton permet à l’utilisateur d'ouvrir une fenêtre de navigation dans ses fichiers locaux afin de sélectionner le fichier de données à importer dans l’application.
-  - **Bouton "Valider"** : Une fois le fichier sélectionné, ce bouton permet de confirmer le choix et de lancer le chargement du fichier dans le graphe.
+- **Bouton "PARCOURIR"** : Ce bouton permet à l’utilisateur d'ouvrir une fenêtre de navigation dans ses fichiers locaux afin de sélectionner le fichier de données à importer dans l’application.
+- **Nom fichier** : une zone texte où s’affichera le chemin vers le fichier sélectionné après avoir utilisé le bouton "PARCOURIR".
+- **Bouton "Valider"** : Une fois le fichier sélectionné, ce bouton permet de confirmer le choix et de lancer le chargement du fichier dans le nuage de points.
 
 ---
 
-- *Ajouter une donnée*
 
 <img src="./ressources/AjouterDonnées.png" width="60%" height="60%" alt="Ajouter une donnée">
 <img src="./ressources/AjoutDonnéesVisible.png" width="60%" height="60%" alt="Classifier une donnée">
 
 
-#### Formulaire d'ajout de données
+#### Ajouter une donnée
 
-Cette page présente une interface permettant à l’utilisateur d'ajouter manuellement de nouvelles données dans l’application.
+Cette page présente une interface permettant à l’utilisateur d'ajouter manuellement de nouvelles données pour lesquelles il souhaite déterminer une classification.
 
-- **Champs de saisie pour les valeurs** : Quatre champs de texte sont affichés dans une boîte.  
-- **Zone texte Valeur**: Ces champs permettent à l’utilisateur de saisir manuellement quatre valeurs différentes.
-- **Bouton "Valider"** : Après avoir rempli les champs de saisie, l’utilisateur peut cliquer sur ce bouton pour valider l'entrée. Cela ajoutera la donnée sur le graphe.
-- **Ajout d'une donnée** : On remarque qu'après avoir cliqué sur le bouton "Valider", une valeur a été ajouté sous la forme d'une étoile de couleur verte.
+- **Champs de saisie pour les valeurs** : Quatre champs de texte sont affichés permettant d'inscrire les 4 valeurs necessaires pour ajouter une donnée (Uniquement des Iris pour le jalon 1).
+- **Bouton "Valider"** : Après avoir rempli les champs de saisie, l’utilisateur peut cliquer sur ce bouton pour valider l'entrée. Cela ajoutera la donnée dans le nuage de points.
+- **Ajout d'une donnée** : On remarque qu'après avoir cliqué sur le bouton "Valider", une valeur a été ajouté sous une forme et une couleur diférenciées des autres.
 ---
 
 <img src="./ressources/AjoutDonnéesVisible.png" width="60%" height="60%" alt="Afficher les données">
@@ -175,18 +182,15 @@ Cette page présente une interface permettant à l’utilisateur d'ajouter manue
 
 #### Visualisation des données classifiées
 
-Cette page représente la visualisation graphique des données après l’étape de classification.
+Cette page représente la visualisation graphique des données après l’étape de classification (réalisé par l'action sur le bouton `classifier les données`, ainsi tous les points non classifiés le sont).
 
 
-- **Graphique** : La zone est désormais utilisée pour afficher un graphique. On y voit plusieurs points de deux couleurs différentes, représentant deux classes distinctes de données :
 - **Bouton "Classifier les données"** : En appuyant sur ce bouton, la donnée ajoutée se classifie selon ses valeurs renseignés.
-- **Points rouges** : Ces points représentent une première catégorie de données classifiées.
-- **Points bleus** : Ils représentent une deuxième catégorie de données classifiées.
-- **Étoile bleue** : Ce symbole représente la nouvelle donnée que l’utilisateur a ajoutée manuellement. L’étoile montre la position de cette donnée sur le graphique, suggérant qu'elle a été classée dans la même catégorie que les points bleus.
+
+La donnée qui avait été ajoutée par l'utilisateur garde un symbole différenciateur mais adopte la couleur de la classification qui lui a été déterminer.
 
 ---
 
-- *Modifier les attributs pour l'affichage*
 
 <img src="./ressources/ModifierAttributs.png" width="60%" height="60%" alt="Modifier les attibuts">
 
@@ -198,27 +202,19 @@ Cette page permet à l’utilisateur de modifier les attributs utilisés pour re
 - **Champ "Valeur Abscisse"** : L'utilisateur peut selectioner ici la valeur qu'il souhaite voir représentée sur l'axe des abscisses (X) du graphique.
 - **Bouton "Valider"** : Une fois les valeurs des axes définies, l’utilisateur peut cliquer sur ce bouton pour appliquer ces paramètres et afficher les données selon les nouveaux attributs choisis.
 
+Cette page permet à l’utilisateur de modifier les attributs utilisés pour représenter les données sur le graphique, en particulier les valeurs des axes X (abscisses) et Y (ordonnées).
 
----
-
-*Chaque prototype est constitué d'une suite d'écrans, ou d'une arborescence d'écrans si plusieurs chemins d'interaction sont possibles.*
+- **Champ "Valeur Ordonnée"** : L'utilisateur peut selectioner ici la valeur qu'il souhaite voir représentée sur l'axe des ordonnées (Y) du graphique.
+- **Champ "Valeur Abscisse"** : L'utilisateur peut selectioner ici la valeur qu'il souhaite voir représentée sur l'axe des abscisses (X) du graphique.
+- **Bouton "Valider"** : Une fois les valeurs des axes définies, l’utilisateur peut cliquer sur ce bouton pour appliquer ces paramètres et afficher les données selon les nouveaux attributs choisis.
 
-*Pour les deux fonctionnalités dont on demande le prototype et la fiche descriptive, vous ferez le lien entre le prototype et la fiche descriptive. Plus précisément, pour chaque étape de la fiche descriptive, vous indiquerez à quel écran elle correspond. Vous pouvez par exemple mettre une légende sous l'écran, par ex. "Écran pour l'étape 3 de la fiche descriptive du UC Ajouter une donnée."*
 
-*Les prototypes peuvent être en faible fidélité.*
+---
 
-*Les prototypes peuvent être dessinés à la main ou générés en utilisant un logiciel. Dans les deux cas, veillez à ce que les images soient lisibles et avec une bonne résolution (possibilité de zoomer pour lire le texte qui s'y trouve).*
+---
 
 ## Diagramme de classes
 
 <img src="./ressources/DiagrammeClasse.png" width="60%" height="60%" alt="Diagramme de classe">
 
-*Inclure un diagramme de classes qui permet d'**implémenter toutes les fonctionnalités**.*
-
-*Le diagramme de classes doit suivre le design pattern MVC, mais vous ne ferez pas figurer les classes de la vue. Il doit être clair quelles classes font partie du contrôleur (par exemple grâce à un nom de classe qui contient 'Controleur'); les classes restantes seront considérées faisant partie du modèle.*
-
-*L'image du diagramme doit être de résolution suffisante permettant de zoomer et lire le texte qui y figure.*
-
-
-
-
+Nous avons fais le choix d'implémenter la classe `ClassificationModel`comme un singleton afin d'éviter que plusieurs model se retrouve au sein de la même application et créé des incohérences.
\ No newline at end of file
diff --git a/Analyse/ressources/DiagrammeClasse.png b/Analyse/ressources/DiagrammeClasse.png
index a63c99a39129ea64d78a5256feebc2d8717066dd..90cb12516286e6b8170c39482d9c22dbe69e5ae7 100644
Binary files a/Analyse/ressources/DiagrammeClasse.png and b/Analyse/ressources/DiagrammeClasse.png differ
diff --git a/pom.xml b/pom.xml
index 73ba586b72e5ccd72df7c7b069c45ee4e590bfe4..fcff1e2da45ce1213d95d7b937472878250c88bb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
                 <artifactId>javafx-maven-plugin</artifactId>
                 <version>0.0.4</version>
                 <configuration>
-                    <mainClass>fr.univlille.sae.classification.view.MainStage</mainClass>
+                    <mainClass>fr.univlille.sae.classification.Main</mainClass>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/res/stages/main-stage.fxml b/res/stages/main-stage.fxml
index b7282d0774a121df384a9a84aa448d821c4c33a5..89ef33782292135bf05d3465c298c5a4b7d52903 100644
--- a/res/stages/main-stage.fxml
+++ b/res/stages/main-stage.fxml
@@ -16,9 +16,9 @@
                      <HBox prefHeight="356.0" prefWidth="691.0">
                         <children>
                            <Region prefHeight="338.0" prefWidth="65.0" />
-                           <ScatterChart prefHeight="342.0" prefWidth="609.0">
+                           <ScatterChart fx:id="scatterChart" prefHeight="342.0" prefWidth="609.0">
                              <xAxis>
-                               <CategoryAxis fx:id="absAxe" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
+                               <NumberAxis fx:id="absAxe" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
                              </xAxis>
                              <yAxis>
                                <NumberAxis fx:id="ordAxe" side="LEFT" />
diff --git a/src/main/java/fr/univlille/sae/classification/Main.java b/src/main/java/fr/univlille/sae/classification/Main.java
index 77fa80b1a00b346d7ece5f116224b02c1127dd38..b6aaee11d0fa8f5860267a74ca592a570c9144b1 100644
--- a/src/main/java/fr/univlille/sae/classification/Main.java
+++ b/src/main/java/fr/univlille/sae/classification/Main.java
@@ -3,18 +3,15 @@ package fr.univlille.sae.classification;
 import fr.univlille.sae.classification.model.ClassificationModel;
 import fr.univlille.sae.classification.view.MainStageView;
 import javafx.application.Application;
-import javafx.fxml.FXMLLoader;
 import javafx.stage.Stage;
 
-import java.io.File;
 import java.io.IOException;
-import java.net.URL;
 
 public class Main extends Application {
 
 
     public void start(Stage stage) throws IOException {
-            ClassificationModel model = new ClassificationModel();
+            ClassificationModel model = ClassificationModel.getClassificationModel();
             MainStageView view = new MainStageView(model);
 
             view.show();
diff --git a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
index 5615e33f207fbc08b654aa578d4e2197ab272a17..965120d3f60d7961f4d6bd46cb23c3940e8d3915 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
@@ -1,5 +1,6 @@
 package fr.univlille.sae.classification.controller;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
 import javafx.scene.control.Label;
@@ -8,6 +9,7 @@ import javafx.stage.FileChooser;
 import javafx.stage.Stage;
 
 import java.io.File;
+import java.io.IOException;
 
 public class LoadDataController {
 
@@ -42,19 +44,21 @@ public class LoadDataController {
          this.file = fileChooser.showOpenDialog(stage);
 
         if(file != null) {
-            filePath.setText(file.getName());
+            filePath.setText(file.getPath());
         }
 
+
+
     }
 
-    public void validate() {
+    public void validate() throws IOException {
 
         if (file == null) {
             stage.close();
             //throw exception
         }
-
-        loadData();
+        ClassificationModel.getClassificationModel().loadData(file);
+        stage.close();
     }
 
 
diff --git a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
index 9639175dbb43eb21c4768a7628148aa26a2f5aed..1088c4e59fb1f0e005cc636bcff1cf5e0509e738 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
@@ -1,5 +1,7 @@
 package fr.univlille.sae.classification.controller;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
+import fr.univlille.sae.classification.view.LoadDataView;
 import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.chart.*;
@@ -17,7 +19,7 @@ public class MainStageController {
     Stage stage;
 
     @FXML
-    CategoryAxis absAxe;
+    NumberAxis absAxe;
 
     @FXML
     NumberAxis ordAxe;
@@ -34,6 +36,8 @@ public class MainStageController {
     @FXML
     Button classifyData;
 
+    @FXML
+    ScatterChart scatterChart;
 
 
     Stage loadStage;
@@ -43,24 +47,15 @@ public class MainStageController {
      * @throws IOException
      */
     public void openLoadData() throws IOException {
-        FXMLLoader loader = new FXMLLoader();
-        URL fxmlFileUrl = new File(System.getProperty("user.dir") + File.separator + "res" + File.separator + "stages" + File.separator + "load-data-stage.fxml").toURI().toURL();
 
-        if (fxmlFileUrl == null) {
-            System.out.println("Impossible de charger le fichier fxml");
-            System.exit(-1);
-        }
-        loader.setLocation(fxmlFileUrl);
-        loadStage = loader.load();
+        LoadDataView loadDataView = new LoadDataView(ClassificationModel.getClassificationModel(), stage);
+        loadDataView.show();
 
-        loadStage.setResizable(false);
-        loadStage.initOwner(stage);
-        loadStage.initModality(Modality.APPLICATION_MODAL);
-        loadStage.setTitle("Chargement des donées");
 
-        loadStage.showAndWait();
+    }
 
 
+    public ScatterChart getScatterChart() {
+        return this.scatterChart;
     }
-
 }
diff --git a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
index 2cdac800ab947cc7b8c3cc23840c06cdad3173f3..b878ee7cd2d8b6b442f05744f5f5c20e33618953 100644
--- a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
+++ b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
@@ -3,14 +3,13 @@ package fr.univlille.sae.classification.model;
 import com.opencsv.bean.CsvToBeanBuilder;
 import fr.univlille.sae.classification.utils.Observable;
 
+import javax.xml.crypto.Data;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.Set;
+import java.util.*;
+
 
 public class ClassificationModel extends Observable {
 
@@ -18,18 +17,42 @@ public class ClassificationModel extends Observable {
     private List<LoadableData> datas;
     private List<LoadableData> dataToClass;
 
-    public ClassificationModel() {
-        this.datas = new ArrayList<>();
+    private DataType type;
 
-    }
+
+    private static ClassificationModel model;
 
     /**
-     * TODO
-     * @param x
-     * @param y
+     * Renvoie une instance unique du model. Par default le type de ce modele est Iris.
+     * Modifier en .setType(DataType).
+     * @return l'instance du model
      */
-    private void ajouterDonnee(double x, double y) {
+    public static ClassificationModel getClassificationModel() {
+        if(model == null) model = new ClassificationModel();
+        return model;
+    }
+
 
+    private ClassificationModel() {
+        this(DataType.IRIS);
+    }
+
+    private ClassificationModel(DataType type) {
+        this.datas = new ArrayList<>();
+        this.dataToClass = new ArrayList<>();
+        this.type = type;
+    }
+
+
+    /**
+     * Ajoute un point au nuage de points avec toutes les données de ce point
+     * @param coords toutes les données du points
+     * @throws IllegalArgumentException Exception levée si le nombre de parametres est insuffisant pour creer un point du type du model
+     */
+    public void ajouterDonnee(double... coords) {
+        LoadableData newData = PointFactory.createPoint(type, coords);
+        this.dataToClass.add(newData);
+        notifyObservers(newData);
     }
 
 
@@ -37,22 +60,50 @@ public class ClassificationModel extends Observable {
      * TODO
      * @param file
      */
-    private void loadData(File file) throws IOException {
+    public void loadData(File file) throws IOException {
         this.datas = new CsvToBeanBuilder<LoadableData>(Files.newBufferedReader(file.toPath()))
                 .withSeparator(',')
                 .withType(Iris.class)
                 .build().parse();
+
+        Set<String> types = new HashSet<>();
+        for (LoadableData d : datas) {
+            types.add(d.getClassification());
+        }
+
+        LoadableData.setClassificationTypes(types);
+        notifyObservers();
     }
 
     /**
      * TODO
      * @param data
      */
-    private void classifierDonnee(LoadableData data) {
+    public void classifierDonnee(LoadableData data) {
 
         List<String> classes = new ArrayList<>(data.getClassificationTypes());
         Random rdm = new Random();
         data.setClassification(classes.get(rdm.nextInt(classes.size())));
+        notifyObservers(data);
+
+    }
+
+
+    public void setType(DataType type) {
+        this.type = type;
+    }
+
+
+    public List<LoadableData> getDatas() {
+        return datas;
+    }
+
+    public List<LoadableData> getDataToClass() {
+        return dataToClass;
+    }
+
 
+    public DataType getType() {
+        return type;
     }
 }
diff --git a/src/main/java/fr/univlille/sae/classification/model/DataType.java b/src/main/java/fr/univlille/sae/classification/model/DataType.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f775b4376c7d7cb985b3c721ca3cde17483c55a
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/model/DataType.java
@@ -0,0 +1,7 @@
+package fr.univlille.sae.classification.model;
+
+public enum DataType {
+
+    IRIS;
+
+}
diff --git a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
index 4de0abe4a687b74074761c54657795809bda17bb..27678aa908bde366122bbce5e0f6351eb4e2a5f5 100644
--- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
+++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
@@ -2,23 +2,28 @@ package fr.univlille.sae.classification.model;
 
 import java.util.Set;
 
-public class LoadableData {
+public abstract class LoadableData {
 
     private static Set<String> classificationTypes;
 
     private String classification;
 
 
-    public LoadableData() {
+    protected LoadableData() {
 
     }
     public String getClassification() {
         return this.classification;
     }
-    Set<String> getClassificationTypes() {
+    public static Set<String> getClassificationTypes() {
         return classificationTypes;
     }
-    void setClassification(String classification) {
+
+    public static void setClassificationTypes(Set<String> classificationTypes) {
+        LoadableData.classificationTypes = classificationTypes;
+    }
+
+    public void setClassification(String classification) {
         this.classification = classification;
     }
 
diff --git a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ee05ec8bb8c6581e49a7b615910af5bb2aa01e1
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
@@ -0,0 +1,21 @@
+package fr.univlille.sae.classification.model;
+
+public class PointFactory {
+
+
+    public static LoadableData createPoint(DataType type, double[] coords)  {
+
+        int size = coords.length;
+        LoadableData data;
+        switch (type) {
+            case IRIS:
+                if(size != 4) throw new IllegalArgumentException();
+                data = new Iris(coords[0],coords[1],coords[2],coords[3]);
+                break;
+            default:
+                throw new IllegalArgumentException();
+        }
+
+        return data;
+    }
+}
diff --git a/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java b/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java
index 226180703f21200d9c94673ba00bfc56e4184bb5..156ab380cbae143783efecbfa18969dc384dccd6 100644
--- a/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/LoadDataView.java
@@ -1,6 +1,45 @@
 package fr.univlille.sae.classification.view;
 
+import fr.univlille.sae.classification.model.ClassificationModel;
+import javafx.fxml.FXMLLoader;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+
 public class LoadDataView {
 
+    private ClassificationModel model;
+    private Stage owner;
+
+    public LoadDataView(ClassificationModel model, Stage owner) {
+        this.model = model;
+        this.owner = owner;
+    }
+
+
+
+    public void show() throws IOException {
+
+        FXMLLoader loader = new FXMLLoader();
+        URL fxmlFileUrl = new File(System.getProperty("user.dir") + File.separator + "res" + File.separator + "stages" + File.separator + "load-data-stage.fxml").toURI().toURL();
+
+        if (fxmlFileUrl == null) {
+            System.out.println("Impossible de charger le fichier fxml");
+            System.exit(-1);
+        }
+        loader.setLocation(fxmlFileUrl);
+        Stage root = loader.load();
+
+        root.setResizable(false);
+        root.initOwner(owner);
+        root.initModality(Modality.APPLICATION_MODAL);
+        root.setTitle("Chargement des donées");
+
+        root.showAndWait();
+
+    }
 
 }
diff --git a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
index 159c4639e73dff13d5a2db8af434c181697a836b..7d3163b7987b6c46bee2ace35d683b6d1de5bbd6 100644
--- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
@@ -1,10 +1,18 @@
 package fr.univlille.sae.classification.view;
 
+import fr.univlille.sae.classification.controller.LoadDataController;
+import fr.univlille.sae.classification.controller.MainStageController;
 import fr.univlille.sae.classification.model.ClassificationModel;
+import fr.univlille.sae.classification.model.DataType;
+import fr.univlille.sae.classification.model.Iris;
+import fr.univlille.sae.classification.model.LoadableData;
 import fr.univlille.sae.classification.utils.Observable;
 import fr.univlille.sae.classification.utils.Observer;
 import javafx.application.Application;
+import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
+import javafx.scene.chart.ScatterChart;
+import javafx.scene.chart.XYChart;
 import javafx.stage.Stage;
 
 import java.io.File;
@@ -14,8 +22,12 @@ import java.net.URL;
 public class MainStageView implements Observer {
 
 
+
+
     private ClassificationModel model;
 
+    private ScatterChart scatterChart;
+
     public MainStageView(ClassificationModel model) {
         this.model = model;
         model.attach(this);
@@ -36,11 +48,28 @@ public class MainStageView implements Observer {
         root.setResizable(false);
         root.setTitle("SAE3.3 - Logiciel de classification");
         root.show();
+        loader.getController();
+        MainStageController controller = loader.getController();
+        scatterChart = controller.getScatterChart();
+
     }
 
 
     @Override
     public void update(Observable observable) {
+        if(scatterChart == null) throw new IllegalStateException();
+        if(!(observable instanceof ClassificationModel)) throw new IllegalStateException();
+        XYChart.Series series1 = new XYChart.Series();
+        series1.setName("Dice Launch");
+        scatterChart.getData().add(series1);
+        for(LoadableData i : model.getDatas()) {
+            if(model.getType() == DataType.IRIS) {
+                series1.getData().add(new XYChart.Data<>(((Iris)i).getPetalLength(),
+                        ((Iris)i).getPetalWidth()));
+
+            }
+        }
+
 
     }