Index: benchmark/plot.py
===================================================================
--- benchmark/plot.py	(revision 0bb691b19aef344575635376308340de3c5025e0)
+++ benchmark/plot.py	(revision 0bb691b19aef344575635376308340de3c5025e0)
@@ -0,0 +1,109 @@
+#!/usr/bin/python3
+"""
+Python Script to plot values obtained by the rmit.py script
+Runs a R.I.P.L.
+
+./plot.py
+-t trials
+-o option:values
+"""
+
+import argparse
+import itertools
+import json
+import math
+import numpy
+import re
+import sys
+
+import matplotlib.pyplot as plt
+from matplotlib.ticker import EngFormatter
+
+def funit(name):
+	match = re.search("Number of (.*)", name)
+	if match:
+		return match.group(1).strip()
+
+	match = re.search("\((.*)\)", name)
+	if match:
+		return match.group(1).strip()
+
+	match = re.search("(.*) per .*", name)
+	if match:
+		return match.group(1).strip()
+
+	match = re.search("(.*)\/.*", name)
+	if match:
+		return match.group(1).strip()
+
+	return "Unkown"
+
+def plot(data, x, y):
+	fig, ax = plt.subplots()
+	colors = itertools.cycle(["r", "b", "g"])
+	series = {}
+	for entry in data:
+		if not entry[0] in series:
+			series[entry[0]] = {'x':[], 'y':[]}
+
+		if x in entry[2] and y in entry[2]:
+			series[entry[0]]['x'].append(entry[2][x])
+			series[entry[0]]['y'].append(entry[2][y])
+
+	for name, data in series.items():
+		plt.scatter(data['x'], data['y'], color=next(colors), label=name, marker='x')
+
+	mx = max([max(s['x']) for s in series.values()])
+	my = max([max(s['y']) for s in series.values()])
+
+	plt.ylabel(y)
+	plt.xlim(0.75, mx + 0.25)
+	plt.xticks(range(1, math.ceil(mx) + 1))
+	plt.xlabel(x)
+	plt.ylim(0, my*1.2)
+	plt.grid(b = True)
+	formatter0 = EngFormatter(unit='Ops/s')
+	ax.yaxis.set_major_formatter(formatter0)
+	plt.legend()
+	plt.show()
+
+
+if __name__ == "__main__":
+	# ================================================================================
+	# parse command line arguments
+	parser = parser = argparse.ArgumentParser(description='Python Script to draw R.M.I.T. results')
+	parser.add_argument('-f', '--file', nargs='?', type=argparse.FileType('r'), default=sys.stdin)
+
+	try:
+		options =  parser.parse_args()
+	except:
+		print('ERROR: invalid arguments', file=sys.stderr)
+		parser.print_help(sys.stderr)
+		sys.exit(1)
+
+	# ================================================================================
+	# load data
+	try :
+		data = json.load(options.file)
+	except :
+		print('ERROR: could not read input', file=sys.stderr)
+		parser.print_help(sys.stderr)
+		sys.exit(1)
+
+	# ================================================================================
+	# identify the keys
+
+	series = set()
+	fields = set()
+
+	for entry in data:
+		series.add(entry[0])
+		for label in entry[2].keys():
+			fields.add(label)
+
+	print(series)
+	print("fields")
+	for f in fields:
+		print("{} ({})".format(f, funit(f)))
+
+	plot(data, "Number of processors", "Ops per second")
