diff --git a/res/stages/axes-settings-stage.fxml b/res/stages/axes-settings-stage.fxml
index 8fb6b84d1748b83d03cb6f3cce523ab8ab62d8c8..3fa1c37d951e26a6260c46fa7abacff1d3acf58b 100644
--- a/res/stages/axes-settings-stage.fxml
+++ b/res/stages/axes-settings-stage.fxml
@@ -24,7 +24,7 @@
                            <ChoiceBox fx:id="selectAbs" prefWidth="150.0" />
                         </children>
                      </HBox>
-                     <Button fx:id="confirmAxes" mnemonicParsing="false" text="Valider" />
+                     <Button fx:id="confirmAxes" onAction="#validate" mnemonicParsing="false" text="Valider" />
                   </children>
                </VBox>
             </children></AnchorPane>
diff --git a/res/stages/data-view-stage.fxml b/res/stages/data-view-stage.fxml
new file mode 100644
index 0000000000000000000000000000000000000000..4eaff3a517f37cf2129ee0f95c841f2182c4ff82
--- /dev/null
+++ b/res/stages/data-view-stage.fxml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.*?>
+<?import javafx.scene.*?>
+<?import javafx.scene.chart.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.image.*?>
+<?import javafx.scene.layout.*?>
+<?import javafx.stage.*?>
+
+<Stage fx:id="stage" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univlille.sae.classification.controller.MainStageController">
+    <scene>
+        <Scene>
+            <AnchorPane prefHeight="363.0" prefWidth="692.0">
+            <children>
+               <VBox prefHeight="363.0" prefWidth="691.0">
+                  <children>
+                     <HBox prefHeight="356.0" prefWidth="691.0">
+                        <children>
+                           <Region prefHeight="338.0" prefWidth="65.0" />
+                           <ScatterChart prefHeight="342.0" prefWidth="609.0">
+                             <xAxis>
+                               <CategoryAxis fx:id="absAxeView" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
+                             </xAxis>
+                             <yAxis>
+                               <NumberAxis fx:id="ordAxeView" side="LEFT" />
+                             </yAxis>
+                           </ScatterChart>
+                           <Button fx:id="settingsView" mnemonicParsing="false">
+                              <graphic>
+                                 <ImageView fitHeight="100.0" fitWidth="30.0" pickOnBounds="true" preserveRatio="true">
+                                    <image>
+                                       <Image url="@gear.png" />
+                                    </image></ImageView>
+                              </graphic>
+                              <HBox.margin>
+                                 <Insets right="10.0" top="30.0" />
+                              </HBox.margin>
+                           </Button>
+                        </children>
+                     </HBox>
+                  </children>
+               </VBox>
+            </children></AnchorPane>
+        </Scene>
+    </scene>
+</Stage>
diff --git a/res/stages/gear.png b/res/stages/gear.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f2b723b8951d835f19ce3d0753be26e7aa9ef03
Binary files /dev/null and b/res/stages/gear.png differ
diff --git a/res/stages/main-stage.fxml b/res/stages/main-stage.fxml
index d32296897275d3818030eeb4d0d56a5d10b3403e..3032ca0a558254be1d26f016e731e4e711779725 100644
--- a/res/stages/main-stage.fxml
+++ b/res/stages/main-stage.fxml
@@ -1,9 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<?import javafx.geometry.*?>
 <?import javafx.scene.*?>
 <?import javafx.scene.chart.*?>
 <?import javafx.scene.control.*?>
+<?import javafx.scene.image.*?>
 <?import javafx.scene.layout.*?>
+<?import javafx.scene.text.*?>
 <?import javafx.stage.*?>
 
 <Stage fx:id="stage" xmlns="http://javafx.com/javafx/17.0.12" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fr.univlille.sae.classification.controller.MainStageController">
@@ -13,18 +16,40 @@
             <children>
                <VBox prefHeight="488.0" prefWidth="691.0">
                   <children>
-                     <HBox prefHeight="356.0" prefWidth="691.0">
+                     <HBox alignment="TOP_CENTER" prefHeight="356.0" prefWidth="691.0" spacing="5.0">
                         <children>
-                           <Region prefHeight="338.0" prefWidth="65.0" />
-                           <ScatterChart fx:id="scatterChart" prefHeight="342.0" prefWidth="609.0">
-                             <xAxis>
-                               <NumberAxis fx:id="absAxe" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
-                             </xAxis>
-                             <yAxis>
-                               <NumberAxis fx:id="ordAxe" side="LEFT" />
-                             </yAxis>
-                           </ScatterChart>
-                           <Button fx:id="settings" mnemonicParsing="false" text="Réglage" />
+                           <AnchorPane prefHeight="200.0" prefWidth="200.0">
+                              <children>
+                                 <Region prefHeight="338.0" prefWidth="65.0" />
+                                 <ScatterChart fx:id="scatterChart" prefHeight="342.0" prefWidth="609.0">
+                                   <xAxis>
+                                     <NumberAxis fx:id="absAxe" prefHeight="21.0" prefWidth="498.0" side="BOTTOM" />
+                                   </xAxis>
+                                   <yAxis>
+                                     <NumberAxis fx:id="ordAxe" side="LEFT" />
+                                   </yAxis>
+                                 </ScatterChart>
+                                 <Label fx:id="AxesSelected" alignment="CENTER" layoutX="175.0" layoutY="152.0" prefHeight="38.0" prefWidth="259.0">
+                                    <font>
+                                       <Font size="21.0" />
+                                    </font></Label>
+                              </children>
+                              <HBox.margin>
+                                 <Insets left="10.0" />
+                              </HBox.margin>
+                           </AnchorPane>
+                            <Button fx:id="settingsView" mnemonicParsing="false" onAction="#openAxesSetting">
+                                <graphic>
+                                    <ImageView fitHeight="100.0" fitWidth="30.0" pickOnBounds="true" preserveRatio="true">
+                                        <image>
+                                            <Image url="@gear.png" />
+                                        </image>
+                                 </ImageView>
+                                </graphic>
+                              <HBox.margin>
+                                 <Insets top="40.0" />
+                              </HBox.margin>
+                            </Button>
                         </children>
                      </HBox>
                      <HBox alignment="CENTER" prefHeight="169.0" prefWidth="691.0" spacing="50.0">
diff --git a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
index 0679ea9492f13d56af8c055656812f6c766632ab..16cae7a159098b17cb3abc58e7f1c52e33d2dc7d 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java
@@ -1,10 +1,16 @@
 package fr.univlille.sae.classification.controller;
 
+import fr.univlille.sae.classification.view.MainStageView;
 import javafx.fxml.FXML;
 import javafx.scene.control.Button;
 import javafx.scene.control.ChoiceBox;
+import javafx.stage.Stage;
+
+
+public class AxesSettingsController{
+    @FXML
+    Stage stage;
 
-public class AxesSettingsController {
     @FXML
     ChoiceBox selectOrd;
 
@@ -13,4 +19,29 @@ public class AxesSettingsController {
 
     @FXML
     Button confirmAxes;
+
+    MainStageView mainStageView;
+
+    public void setSelectOrd(String[] fields){
+        selectOrd.getItems().clear();
+        selectOrd.getItems().addAll(fields);
+        selectOrd.setValue(mainStageView.getActualY());
+    }
+
+    public void setSelectAbs(String[] fields){
+        selectAbs.getItems().clear();
+        selectAbs.getItems().addAll(fields);
+        selectAbs.setValue(mainStageView.getActualX());
+    }
+
+    public void setMainStageView(MainStageView mainStageView) {
+        this.mainStageView = mainStageView;
+    }
+
+    public void validate(){
+        mainStageView.setActualX(selectAbs.getValue().toString());
+        mainStageView.setActualY(selectOrd.getValue().toString());
+        mainStageView.update(mainStageView.getModel());
+        stage.close();
+    }
 }
diff --git a/src/main/java/fr/univlille/sae/classification/controller/DataViewStage.java b/src/main/java/fr/univlille/sae/classification/controller/DataViewStage.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe7a9b0083d0ef2abc3ac4a22eb5be0faae92c5c
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/controller/DataViewStage.java
@@ -0,0 +1,22 @@
+package fr.univlille.sae.classification.controller;
+
+import javafx.fxml.FXML;
+import javafx.scene.chart.CategoryAxis;
+import javafx.scene.chart.NumberAxis;
+import javafx.scene.control.Button;
+import javafx.stage.Stage;
+
+public class DataViewStage {
+
+    @FXML
+    Stage stage;
+
+    @FXML
+    CategoryAxis absAxe;
+
+    @FXML
+    NumberAxis ordAxe;
+
+    @FXML
+    Button settings;
+}
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 965120d3f60d7961f4d6bd46cb23c3940e8d3915..cf27808e0137d14171c71ffaa2153cc07ff6cd8c 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/LoadDataController.java
@@ -30,15 +30,12 @@ public class LoadDataController {
 
 
     public void loadData() {
-
         System.out.println("Loading data");
         stage.close();
-
     }
 
 
     public void openFileChooser() {
-
         FileChooser fileChooser = new FileChooser();
         fileChooser.setTitle("Choisissez le fichier à importer");
          this.file = fileChooser.showOpenDialog(stage);
@@ -47,8 +44,6 @@ public class LoadDataController {
             filePath.setText(file.getPath());
         }
 
-
-
     }
 
     public void validate() throws IOException {
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 43599c8041b94d95e3569264fc937c30a3d38c7d..cacb8e322aa55ea5b07d520f258cb5c579631a34 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/MainStageController.java
@@ -1,12 +1,16 @@
 package fr.univlille.sae.classification.controller;
 
 import fr.univlille.sae.classification.model.ClassificationModel;
+import fr.univlille.sae.classification.view.AxesSettingsView;
 import fr.univlille.sae.classification.view.LoadDataView;
+import fr.univlille.sae.classification.view.MainStageView;
 import fr.univlille.sae.classification.view.AddDataView;
+import fr.univlille.sae.classification.view.MainStageView;
 import javafx.fxml.FXML;
 
 import javafx.scene.chart.*;
 import javafx.scene.control.Button;
+import javafx.scene.control.Label;
 import javafx.stage.*;
 
 
@@ -40,19 +44,29 @@ public class MainStageController {
     @FXML
     ScatterChart scatterChart;
 
+    @FXML
+    Label AxesSelected;
+
 
     Stage loadStage;
+    private MainStageView mainStageView;
 
     /**
      * Ouvre l'interface de chargement des données.
      * @throws IOException
      */
     public void openLoadData() throws IOException {
-
         LoadDataView loadDataView = new LoadDataView(ClassificationModel.getClassificationModel(), stage);
         loadDataView.show();
+    }
 
+    public void openAxesSetting()throws IOException {
+        AxesSettingsView axesSettingsView = new AxesSettingsView(ClassificationModel.getClassificationModel(), stage, mainStageView);
+        axesSettingsView.show();
+    }
 
+    public void setMainStageView(MainStageView mainStageView) {
+        this.mainStageView = mainStageView;
     }
 
     /**
@@ -63,6 +77,7 @@ public class MainStageController {
 
         AddDataView addDataView = new AddDataView(ClassificationModel.getClassificationModel(), stage);
         addDataView.show();
+    }
 
 
     }
@@ -71,4 +86,8 @@ public class MainStageController {
     public ScatterChart getScatterChart() {
         return this.scatterChart;
     }
+
+    public void setAxesSelected(String texte) {
+        this.AxesSelected.setText(texte);
+    }
 }
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 b878ee7cd2d8b6b442f05744f5f5c20e33618953..b581562f7ead46a3650364f1d033b89e6cf4d98a 100644
--- a/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
+++ b/src/main/java/fr/univlille/sae/classification/model/ClassificationModel.java
@@ -19,9 +19,9 @@ public class ClassificationModel extends Observable {
 
     private DataType type;
 
-
     private static ClassificationModel model;
 
+
     /**
      * Renvoie une instance unique du model. Par default le type de ce modele est Iris.
      * Modifier en .setType(DataType).
@@ -102,7 +102,6 @@ public class ClassificationModel extends Observable {
         return dataToClass;
     }
 
-
     public DataType getType() {
         return type;
     }
diff --git a/src/main/java/fr/univlille/sae/classification/model/Iris.java b/src/main/java/fr/univlille/sae/classification/model/Iris.java
index 629f3b67653ce742a3e9647cd784c4f04c4f04b3..5f6d3a77d66e42c1553aaf749212d29fbe88eff9 100644
--- a/src/main/java/fr/univlille/sae/classification/model/Iris.java
+++ b/src/main/java/fr/univlille/sae/classification/model/Iris.java
@@ -1,7 +1,9 @@
 package fr.univlille.sae.classification.model;
 
-import java.util.Set;
 import com.opencsv.bean.*;
+import javafx.scene.paint.Color;
+
+import java.util.Random;
 
 public class Iris extends LoadableData{
 
@@ -13,6 +15,8 @@ public class Iris extends LoadableData{
     private double petalWidth;
     @CsvBindByName(column = "petal.length")
     private double petalLength;
+    @CsvBindByName(column = "variety")
+    private String variety;
 
     public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength) {
         this(sepalWidth, sepalLength, petalWidth, petalLength, "undefined");
@@ -22,12 +26,13 @@ public class Iris extends LoadableData{
         //
     }
 
-    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength, String classification) {
+    public Iris(double sepalWidth, double sepalLength, double petalWidth, double petalLength, String variety) {
         super();
         this.sepalWidth = sepalWidth;
         this.sepalLength = sepalLength;
         this.petalWidth = petalWidth;
         this.petalLength = petalLength;
+        this.variety = variety;
     }
 
     public double getSepalWidth() {
@@ -46,6 +51,48 @@ public class Iris extends LoadableData{
         return petalLength;
     }
 
+                        public String getVariety() {
+        return variety;
+    }
+
+    public double getDataType(String axes){
+        switch (axes){
+            case "sepalWidth":
+                return sepalWidth;
+            case "sepalLength":
+                return sepalLength;
+            case "petalWidth":
+                return petalWidth;
+            case "petalLength":
+                return petalLength;
+            default:
+                return sepalLength;
+        }
+    }
+
+    public Color getColor(){
+        switch (this.variety){
+            case "Setosa":
+                return Color.RED;
+            case "Versicolor":
+                return Color.BLUE;
+            case "Virginica":
+                return Color.GREEN;
+            default:
+                return Color.BLACK;
+        }
+    }
+
+    public String[] getAttributesName() {
+        String[] names = new String[]{
+                "sepalWidth",
+                "sepalLength",
+                "petalWidth",
+                "petalLength"
+        };
+        return names;
+    }
+
     @Override
     public String toString() {
         return "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 27678aa908bde366122bbce5e0f6351eb4e2a5f5..fba0fb716aefea3f9a0fb81e584f41671130891c 100644
--- a/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
+++ b/src/main/java/fr/univlille/sae/classification/model/LoadableData.java
@@ -8,13 +8,18 @@ public abstract class LoadableData {
 
     private String classification;
 
-
     protected LoadableData() {
 
     }
+
+    public void addClassification(String classificationType) {
+        this.classificationTypes.add(classificationType);
+    }
+
     public String getClassification() {
         return this.classification;
     }
+
     public static Set<String> getClassificationTypes() {
         return classificationTypes;
     }
@@ -27,4 +32,6 @@ public abstract class LoadableData {
         this.classification = classification;
     }
 
+    public abstract String[] getAttributesName();
+
 }
diff --git a/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java b/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5cc72fb9ca2601314228f8f4a32f204730fd7a1
--- /dev/null
+++ b/src/main/java/fr/univlille/sae/classification/view/AxesSettingsView.java
@@ -0,0 +1,56 @@
+package fr.univlille.sae.classification.view;
+
+import fr.univlille.sae.classification.controller.AxesSettingsController;
+import fr.univlille.sae.classification.controller.MainStageController;
+import fr.univlille.sae.classification.model.ClassificationModel;
+import fr.univlille.sae.classification.model.LoadableData;
+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 AxesSettingsView {
+
+
+    private ClassificationModel model;
+    private Stage owner;
+    private MainStageView mainStageView;
+
+    public AxesSettingsView(ClassificationModel model, Stage owner, MainStageView mainStageView){
+        this.model = model;
+        this.owner = owner;
+        this.mainStageView = mainStageView;
+    }
+
+    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 + "axes-settings-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("Configuration des axes");
+        AxesSettingsController controller = loader.getController();
+
+        LoadableData dataType = model.getDatas().get(0);
+
+        controller.setMainStageView(mainStageView);
+
+        controller.setSelectAbs(dataType.getAttributesName());
+        controller.setSelectOrd(dataType.getAttributesName());
+
+        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 7d3163b7987b6c46bee2ace35d683b6d1de5bbd6..6a109423c1cd925a295d7bd69b742ad3ffd48614 100644
--- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
+++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java
@@ -13,20 +13,25 @@ import javafx.fxml.FXML;
 import javafx.fxml.FXMLLoader;
 import javafx.scene.chart.ScatterChart;
 import javafx.scene.chart.XYChart;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Circle;
 import javafx.stage.Stage;
 
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
 
 public class MainStageView implements Observer {
 
-
-
-
     private ClassificationModel model;
-
     private ScatterChart scatterChart;
+    private MainStageController controller;
+
+    private String actualX;
+    private String actualY;
 
     public MainStageView(ClassificationModel model) {
         this.model = model;
@@ -49,32 +54,62 @@ public class MainStageView implements Observer {
         root.setTitle("SAE3.3 - Logiciel de classification");
         root.show();
         loader.getController();
-        MainStageController controller = loader.getController();
+        controller = loader.getController();
+        controller.setMainStageView(this);
         scatterChart = controller.getScatterChart();
-
+        controller.setAxesSelected("Aucun fichier sélectionné");
     }
 
 
     @Override
     public void update(Observable observable) {
         if(scatterChart == null) throw new IllegalStateException();
+        scatterChart.getData().clear();
         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()));
-
+        series1.setName("Iris");
+        if(model.getType() == DataType.IRIS) {
+            controller.setAxesSelected("");
+            if(actualX==null && actualY==null){
+                controller.setAxesSelected("Aucuns axes sélectionnés");
+            }
+            else{
+                scatterChart.getData().add(series1);
+                for(LoadableData i : model.getDatas()) {
+                    Iris iris = (Iris)i;
+                    XYChart.Data<Double, Double> dataPoint = new XYChart.Data<>(iris.getDataType(actualX),
+                            iris.getDataType(actualY));
+                    Circle circle = new Circle(5);
+                    circle.setFill(iris.getColor());
+                    dataPoint.setNode(circle);
+                    series1.getData().add(dataPoint);
+                }
             }
         }
-
-
     }
 
     @Override
     public void update(Observable observable, Object data) {
 
     }
+
+    public void setActualX(String actualX) {
+        this.actualX = actualX;
+    }
+
+    public void setActualY(String actualY) {
+        this.actualY = actualY;
+    }
+
+    public String getActualX() {
+        return actualX;
+    }
+
+    public String getActualY() {
+        return actualY;
+    }
+
+    public Observable getModel() {
+        return this.model;
+    }
 }