From b32395fbbb5a508bed1069e8450671b037df0fa2 Mon Sep 17 00:00:00 2001 From: "hugo.debuyser.etu" <hugo.debuyser.etu@univ-lille.fr> Date: Mon, 21 Oct 2024 23:52:22 +0200 Subject: [PATCH] =?UTF-8?q?Test=20d'affichage=20de=20couleur=20pour=20Iris?= =?UTF-8?q?=20et=20modification=20des=20param=C3=A8tres=20des=20axes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AxesSettingsController.java | 2 ++ .../sae/classification/model/Iris.java | 24 +++++++++++-- .../classification/model/LoadableData.java | 7 +++- .../classification/view/MainStageView.java | 35 ++++++++++++------- 4 files changed, 52 insertions(+), 16 deletions(-) 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 4d46b66..16cae7a 100644 --- a/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java +++ b/src/main/java/fr/univlille/sae/classification/controller/AxesSettingsController.java @@ -25,11 +25,13 @@ public class AxesSettingsController{ 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) { 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 8d4d2c0..20d5b2e 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,7 @@ package fr.univlille.sae.classification.model; -import java.util.Set; import com.opencsv.bean.*; +import javafx.scene.paint.Color; public class Iris extends LoadableData{ @@ -13,6 +13,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 +24,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 +49,10 @@ public class Iris extends LoadableData{ return petalLength; } + public String getVariety() { + return variety; + } + public double getDataType(String axes){ if(axes==null){ return sepalWidth; @@ -64,6 +71,19 @@ public class Iris extends LoadableData{ } } + 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", 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 3e4743d..fba0fb7 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; } 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 4a74452..b06f124 100644 --- a/src/main/java/fr/univlille/sae/classification/view/MainStageView.java +++ b/src/main/java/fr/univlille/sae/classification/view/MainStageView.java @@ -13,11 +13,15 @@ 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; public class MainStageView implements Observer { @@ -61,12 +65,17 @@ public class MainStageView implements Observer { 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).getDataType(actualX), - ((Iris)i).getDataType(actualY))); + if(model.getType() == DataType.IRIS) { + series1.setName("Iris"); + 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); } } } @@ -76,14 +85,6 @@ public class MainStageView implements Observer { } - public String getActualX() { - return actualX; - } - - public String getActualY() { - return actualY; - } - public void setActualX(String actualX) { this.actualX = actualX; } @@ -92,6 +93,14 @@ public class MainStageView implements Observer { this.actualY = actualY; } + public String getActualX() { + return actualX; + } + + public String getActualY() { + return actualY; + } + public Observable getModel() { return this.model; } -- GitLab