/** * Graph-Klasse, die ein Trainingsset von Datenpunkten (DataPoint-Objekte) * entgegennimmt und diese nach Aufruf der Methode zeichnen() in einem * Koordinatensystem darstellt. * * @author: Sabine Schlötzer */ public class Graph { int breite = 500; int hoehe = 400; int rand = 15; ArrayList trainingset; ArrayList graphenobjekte; // für x1-Werte bis etwa 500 (vgl. daten.txt) double streckenInX1Faktor = 0.8; // für x2-Werte bis etwa 25 (vgl. daten.txt) double streckenInX2Faktor = 10; World w = new World(breite, hoehe); public Graph(ArrayList t) { trainingset = t; graphenobjekte = new ArrayList(); w.setBackgroundColor(Color.whitesmoke); // x1-Achse Line x1_Achse = new Line(rand, hoehe - rand, breite - rand, hoehe - rand); x1_Achse.setBorderWidth(1); x1_Achse.setBorderColor(Color.black); Text x1_Label = new Text(breite - 2 * rand, hoehe - 2 * rand, 10, "x1"); x1_Label.setFillColor(Color.darkgrey); Triangle t1 = new Triangle(breite - rand, hoehe - rand + 5, breite - rand, hoehe - rand - 5, breite - rand + 10, hoehe - rand); t1.setFillColor(Color.black); // x2-Achse Line x2_Achse = new Line(rand, rand, rand, hoehe - rand); x2_Achse.setBorderWidth(1); x2_Achse.setBorderColor(Color.black); Text x2_Label = new Text(rand + 2, rand, 10, "x2"); x2_Label.setFillColor(Color.darkgrey); Triangle t2 = new Triangle(rand + 5, rand, rand - 5, rand, rand, rand - 10); t2.setFillColor(Color.black); } public void zeichnen() { for (DataPoint p : trainingset) { double x = p.getX1() * streckenInX1Faktor + rand; double y = -p.getX2() * streckenInX2Faktor - rand + hoehe; Circle c = new Circle(x, y, 5); Text t = new Text(x + 2, y + 2, 10, p.getName()); t.setFillColor(Color.darkgrey); if(p.getLabel() == 1) { c.setFillColor(Color.greenyellow); } else { c.setFillColor(Color.red); } graphenobjekte.add(c); graphenobjekte.add(t); } } public void leeren() { for (Shape o : graphenobjekte) { o.destroy(); } graphenobjekte.clear(); } }