2023-12-09 11:22:26 +01:00
|
|
|
/**
|
|
|
|
|
* 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
|
2023-12-05 12:20:13 +00:00
|
|
|
{
|
|
|
|
|
int breite = 500;
|
|
|
|
|
int hoehe = 400;
|
|
|
|
|
int rand = 15;
|
|
|
|
|
|
|
|
|
|
ArrayList<DataPoint> trainingset;
|
|
|
|
|
|
|
|
|
|
ArrayList<Shape> graphenobjekte;
|
|
|
|
|
|
2023-12-09 11:22:26 +01:00
|
|
|
// für x1-Werte bis etwa 500 (vgl. daten.txt)
|
2023-12-05 12:20:13 +00:00
|
|
|
double streckenInX1Faktor = 0.8;
|
2023-12-09 11:22:26 +01:00
|
|
|
// für x2-Werte bis etwa 25 (vgl. daten.txt)
|
2023-12-05 12:20:13 +00:00
|
|
|
double streckenInX2Faktor = 10;
|
|
|
|
|
|
|
|
|
|
World w = new World(breite, hoehe);
|
|
|
|
|
|
|
|
|
|
public Graph(ArrayList<DataPoint> t)
|
|
|
|
|
{
|
|
|
|
|
trainingset = t;
|
|
|
|
|
graphenobjekte = new ArrayList<Shape>();
|
|
|
|
|
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();
|
|
|
|
|
}
|
2023-12-09 11:22:26 +01:00
|
|
|
}
|
|
|
|
|
|