diff --git a/plot.py b/plot.py
new file mode 100644
index 0000000..d6ed788
--- /dev/null
+++ b/plot.py
@@ -0,0 +1,96 @@
+import sys
+import matplotlib.pyplot as plt
+from collections import deque
+#
+# Copyright(c) 2018 Daniel Knüttel
+#
+
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+# Dieses Programm ist Freie Software: Sie können es unter den Bedingungen
+# der GNU General Public License, wie von der Free Software Foundation,
+# Version 3 der Lizenz oder (nach Ihrer Wahl) jeder neueren
+# veröffentlichten Version, weiterverbreiten und/oder modifizieren.
+#
+# Dieses Programm wird in der Hoffnung, dass es nützlich sein wird, aber
+# OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite
+# Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
+# Siehe die GNU General Public License für weitere Details.
+#
+# Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
+# Programm erhalten haben. Wenn nicht, siehe .
+
+"""
+This script reads ``"x,y"`` values as lines from stdin and plots them.
+If a line ``"XXX"`` is received the script will start a new plot.
+
+Example::
+
+ ./main | python3 plot.py
+
+"""
+
+
+datax = deque()
+datay = deque()
+
+cnt = 0
+dpoints = 0
+
+error_occured = False
+
+for line in sys.stdin:
+
+ if(line == "XXX\n"):
+ if(not datax):
+ continue
+ plt.clf()
+ plt.plot(datax, datay)
+ plt.xlabel("N")
+ plt.ylabel("Error")
+
+ plt.savefig("{}.png".format(cnt))
+ cnt += 1
+
+ dpoints += len(datax)
+ datax = deque()
+ datay = deque()
+ continue
+ try:
+ x, y = line.split(",")
+ x = float(x)
+ y = float(y)
+ datax.append(x)
+ datay.append(y)
+ except Exception as e:
+ print(line)
+ print(e)
+ error_occured = True
+ break
+if(datax):
+ plt.clf()
+ plt.plot(datax, datay)
+ plt.xlabel("N")
+ plt.ylabel("Error")
+
+ plt.savefig("{}.png".format(cnt))
+ cnt += 1
+
+ dpoints += len(datax)
+
+if(error_occured):
+ print("Received malformed data and aborted early.")
+print("Created", cnt, "plots containing", dpoints, "points in total.")
+