diff --git a/frc971/control_loops/python/path_edit.py b/frc971/control_loops/python/path_edit.py
index d743e0d..b7e0246 100755
--- a/frc971/control_loops/python/path_edit.py
+++ b/frc971/control_loops/python/path_edit.py
@@ -235,7 +235,6 @@
             if self.points.getSplines():
                 self.draw_splines(cr)
                 for i, points in enumerate(self.points.getSplines()):
-
                     points = [
                         np.array([self.mToPx(x), self.mToPx(y)])
                         for (x, y) in points
@@ -332,6 +331,17 @@
         self.queue_draw()
         self.graph.schedule_recalculate(self.points)
 
+    def clear_graph(self):
+        self.points = Points()
+        #recalulate graph using new points
+        self.graph.axis.clear()
+        self.graph.queue_draw()
+        #allow placing again
+        self.mode = Mode.kPlacing
+        #redraw entire graph
+        self.queue_draw()
+        #TODO: Make a way to undo clear
+
     def do_key_press_event(self, event):
         keyval = Gdk.keyval_to_lower(event.keyval)
 
@@ -354,7 +364,6 @@
             event.x, event.y)
         if self.mode == Mode.kEditing:
             if self.index_of_edit > -1 and self.held_x != self.mousex:
-
                 self.points.setSplines(self.spline_edit, self.index_of_edit,
                                        self.pxToM(self.mousex),
                                        self.pxToM(self.mousey))
diff --git a/frc971/control_loops/python/spline_graph.py b/frc971/control_loops/python/spline_graph.py
index 258dcfa..e07bc80 100755
--- a/frc971/control_loops/python/spline_graph.py
+++ b/frc971/control_loops/python/spline_graph.py
@@ -20,6 +20,9 @@
 
         self.connect(event, handler)
 
+    def clear_clicked(self, button):
+        self.field.clear_graph()
+
     def output_json_clicked(self, button):
         self.field.export_json(self.file_name_box.get_text())
 
@@ -129,6 +132,9 @@
         self.input_json.set_size_request(100, 40)
         self.input_json.connect("clicked", self.input_json_clicked)
 
+        self.clear = Gtk.Button.new_with_label("Clear")
+        self.clear.set_size_request(100, 40)
+        self.clear.connect("clicked", self.clear_clicked)
         #Dropdown feature
         self.label = Gtk.Label()
         self.label.set_text("Change Field:")
@@ -169,6 +175,7 @@
         jsonControls.add(self.file_name_box)
         jsonControls.add(self.output_json)
         jsonControls.add(self.input_json)
+        jsonControls.add(self.clear)
         container.attach(jsonControls, 1, 0, 1, 1)
 
         container.attach(self.label, 4, 0, 1, 1)
