diff --git a/Aufgabe4/Plotter.java b/Aufgabe4/Plotter.java
new file mode 100644
index 0000000000000000000000000000000000000000..f9bedbdb65c350e674a97b0d0a6d4dee2e990210
--- /dev/null
+++ b/Aufgabe4/Plotter.java
@@ -0,0 +1,93 @@
+import javax.swing.SwingUtilities;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.BorderFactory;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Graphics;
+import java.awt.event.MouseEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.geom.Line2D;
+import java.util.Arrays;
+
+public class Plotter {
+
+
+    public static void plot(ValuesToDraw valuesToDraw) {
+
+
+        SwingUtilities.invokeLater(new Runnable() {
+
+            public void run() {
+                createAndShowGUI(valuesToDraw);
+            }
+
+        });
+    }
+
+
+
+    public static void createAndShowGUI(ValuesToDraw valuesToDraw) {
+
+        JFrame f = new JFrame("Function Plotter");
+        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        f.add(new PlotterPanel(valuesToDraw));
+        f.pack();
+        f.setVisible(true);
+
+    }
+}
+
+class PlotterPanel extends JPanel {
+
+    final int ZERO_POINT_X = 400;
+    final int ZERO_POINT_Y = 300;
+
+    ValuesToDraw valuesToDraw;
+
+
+    PlotterPanel(ValuesToDraw valuesToDraw) {
+        this.valuesToDraw = valuesToDraw;
+    }
+
+
+    public Dimension getPreferredSize() {
+        return new Dimension(800,600);
+    }
+
+    protected void paintComponent(Graphics g) {
+        super.paintComponent(g);
+
+
+        g.drawLine(400, 0, 400, 600);
+        g.drawLine(0, 300, 800, 300);
+
+
+        int[] xCords = valuesToDraw.getXCords();
+        int[] yCords = valuesToDraw.getYCords();
+
+        System.out.println(Arrays.toString(xCords));
+
+        int[] xCordsFromZeroPoint = new int[41];
+        int[] yCordsFromZeroPoint = new int[41];
+
+
+        for(int i = 0; i < 41; i++) {
+            xCordsFromZeroPoint[i] = xCords[i] + ZERO_POINT_X;
+        }
+
+        for(int i = 0; i < 41; i++) {
+            yCordsFromZeroPoint[i] = yCords[i] + ZERO_POINT_Y;
+        }
+
+
+
+        g.drawPolyline(xCordsFromZeroPoint, yCordsFromZeroPoint, 21);
+
+
+    }
+
+
+}
+
+
diff --git a/Aufgabe4/SwingPaintDemo3.java b/Aufgabe4/SwingPaintDemo3.java
index 2fdf3f39ca246ad8e362aea1639eccdfe53f1fe3..6df66efc8dec867574aa28710495931a9f653f1a 100644
--- a/Aufgabe4/SwingPaintDemo3.java
+++ b/Aufgabe4/SwingPaintDemo3.java
@@ -109,4 +109,6 @@ class MyPanel extends JPanel {
         g.setColor(Color.BLACK);
         g.drawRect(squareX,squareY,squareW,squareH);
     }
+
+
 }
diff --git a/Aufgabe4/ValuesToDraw.java b/Aufgabe4/ValuesToDraw.java
new file mode 100644
index 0000000000000000000000000000000000000000..ace35f7f0295992bf29f52859189312e16869a3f
--- /dev/null
+++ b/Aufgabe4/ValuesToDraw.java
@@ -0,0 +1,28 @@
+import java.util.ArrayList;
+
+public class ValuesToDraw {
+
+    private ArrayList<int[]> xCordArrays;
+
+    int i = 0;
+
+    ValuesToDraw(ArrayList<int[]> xCordArrays) {
+        this.xCordArrays = xCordArrays;
+
+    }
+
+    public int[] getXCords() {
+
+        return xCordArrays.get(i++);
+
+    }
+
+    public int[] getYCords () {
+
+        return new int[]{-20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10,
+                -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+                10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
+
+    }
+
+}
diff --git a/Aufgabe4/main.java b/Aufgabe4/main.java
index 4aac734df56a343d1102a4ef2f683b561906ac57..b56a7caa05e60b2dd5f07ef1980a3f3c715c2af2 100644
--- a/Aufgabe4/main.java
+++ b/Aufgabe4/main.java
@@ -8,6 +8,11 @@ public class main {
     public static void main(String[] args) throws IOException {
 
 
+
+
+
+
+
         // values above integer space will produce errors
 
         ArrayList<String> stringsFromFile = new ArrayList<>();
@@ -57,17 +62,32 @@ public class main {
 
         Evaluator e = new Evaluator();
 
+        ArrayList<int[]> arraysOfXValues = new ArrayList<>();
+
         for(AstExpression astExpression : rootAstExpressions) {
 
+            int[] xCords = new int[41];
+
+            int j = 0;
+
             for(int i = -20; i < 21; i++) {
                 e.setCounter(i);
+
+                xCords[j] = (int) e.visit(astExpression);
+
                 System.out.println(e.visit(astExpression));
+                j++;
             }
 
+            arraysOfXValues.add(xCords);
+
             System.out.println("------------");
 
         }
 
+        ValuesToDraw valuesToDraw = new ValuesToDraw(arraysOfXValues);
+
+         Plotter.plot(valuesToDraw);
 
 
         //printAst(result);
diff --git a/out/production/inf3_git/main.class b/out/production/inf3_git/main.class
index 30c986cdc3065702569085f00fe7a7ea4446b4c2..3623c2b8f2866a0612ae6e474e1cc569363d8d5a 100644
Binary files a/out/production/inf3_git/main.class and b/out/production/inf3_git/main.class differ