diff --git a/bin/plot_measurements.py b/bin/plot_measurements.py
new file mode 100644
index 0000000000000000000000000000000000000000..4d7a2654a55b6e38b11679e0c93365e936026017
--- /dev/null
+++ b/bin/plot_measurements.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+import pandas
+import matplotlib.pyplot as plt
+import sys
+
+title = sys.argv[1]
+filename = title.lower().replace(" ", "_") + ".pdf"
+
+flopframe = pandas.read_csv("./poissondg-insn2/floprates.csv", header=None, delimiter=" ", names=("exec", "degree", "what", "GFlops"))
+flopframe = flopframe[flopframe.what == "residual_evaluation"]
+
+timeframe = pandas.read_csv("./poissondg-insn2/doftimes.csv", header=None, delimiter=" ", names=("exec", "degree", "what", "DOFs"))
+timeframe = timeframe[timeframe.what == "residual_evaluation"]
+
+fig, ax1 = plt.subplots()
+
+ax2 = ax1.twinx()
+ax1.plot(frame['degree'], flopframe['GFlops'])
+ax2.plot(frame['degree'], timeframe['DOFs'])
+
+ax1.set_xlabel("Polynomial degree")
+ax1.set_ylabel("GFlops")
+ax2.set_ylabel("DOFs / s")
+plt.title(title)
+
+plt.savefig(filename)
diff --git a/bin/calculate_floprate.py b/bin/process_measurements.py
similarity index 83%
rename from bin/calculate_floprate.py
rename to bin/process_measurements.py
index 14ff9fe88c89ad093672374ca724b6cdd2ac0329..945687f99f58a673693b763544d5b69eaae2e059 100755
--- a/bin/calculate_floprate.py
+++ b/bin/process_measurements.py
@@ -27,7 +27,8 @@ def calculate_floprate():
             exe, kernel = key
             if "nonopcount" in exe and kernel != "total":
                 opexe = exe.replace("nonopcount", "opcount")
-                out.write(" ".join([exe, kernel, str((ops[opexe][kernel] / time[exe][kernel]) / 1e9)]) + "\n")
+                degree = re.match(".*deg([0-9]*).*", exe).group(1)
+                out.write(" ".join([exe, degree, kernel, str((ops[opexe][kernel] / time[exe][kernel]) / 1e9)]) + "\n")
 
 
 def calculate_doftimes():
@@ -41,8 +42,9 @@ def calculate_doftimes():
     with open('doftimes.csv', 'w') as out:
         for key in time.keys():
             exe, kernel = key
+            degree = re.match(".*deg([0-9]*).*", exe).group(1)
             if "nonopcount" in exe:
-                out.write(" ".join([exe, kernel, str(dofs[exe]["dofs"] / time[exe][kernel] / 1e6)]) + "\n")
+                out.write(" ".join([exe, degree, kernel, str(dofs[exe]["dofs"] / time[exe][kernel] / 1e6)]) + "\n")
 
 
 if __name__ == '__main__':