Index: benchmark/plot.py
===================================================================
--- benchmark/plot.py	(revision 3b5dcfa06043cbad0e34401747306e90e6d9797d)
+++ benchmark/plot.py	(revision 90a812553b6fb7bc8cf5dadc34f305f3df56721e)
@@ -22,8 +22,9 @@
 
 class Field:
-	def __init__(self, unit, _min, _log):
+	def __init__(self, unit, _min, _log, _name=None):
 		self.unit = unit
 		self.min  = _min
 		self.log  = _log
+		self.name = _name
 
 field_names = {
@@ -32,10 +33,10 @@
 	"Ops per procs"         : Field('Ops'   , 0, False),
 	"Ops per threads"       : Field('Ops'   , 0, False),
-	"ns per ops/procs"      : Field('ns'    , 0, False),
+	"ns per ops/procs"      : Field(''    , 0, False, _name = "Latency (ns $/$ (Processor $\\times$ Operation))" ),
 	"Number of threads"     : Field(''      , 1, False),
 	"Total Operations(ops)" : Field('Ops'   , 0, False),
 	"Ops/sec/procs"         : Field('Ops'   , 0, False),
 	"Total blocks"          : Field('Blocks', 0, False),
-	"Ops per second"        : Field('Ops'   , 0, False),
+	"Ops per second"        : Field(''   , 0, False),
 	"Cycle size (# thrds)"  : Field('thrd'  , 1, False),
 	"Duration (ms)"         : Field('ms'    , 0, False),
@@ -51,5 +52,5 @@
 }
 
-def plot(in_data, x, y, out):
+def plot(in_data, x, y, options):
 	fig, ax = plt.subplots()
 	colors = itertools.cycle(['#0095e3','#006cb4','#69df00','#0aa000','#fb0300','#e30002','#fd8f00','#ff7f00','#8f00d6','#4b009a','#ffff00','#b13f00'])
@@ -109,10 +110,12 @@
 	print("Finishing Plots")
 
-	plt.ylabel(y)
+	plt.ylabel(field_names[y].name if field_names[y].name else y)
 	# plt.xticks(range(1, math.ceil(mx) + 1))
-	plt.xlabel(x)
+	plt.xlabel(field_names[x].name if field_names[x].name else x)
 	plt.grid(b = True)
 	ax.xaxis.set_major_formatter( EngFormatter(unit=field_names[x].unit) )
-	if field_names[x].log:
+	if options.logx:
+		ax.set_xscale('log')
+	elif field_names[x].log:
 		ax.set_xscale('log')
 	else:
@@ -120,14 +123,16 @@
 
 	ax.yaxis.set_major_formatter( EngFormatter(unit=field_names[y].unit) )
-	if field_names[y].log:
+	if options.logy:
+		ax.set_yscale('log')
+	elif field_names[y].log:
 		ax.set_yscale('log')
 	else:
-		plt.ylim(field_names[y].min, my*1.2)
+		plt.ylim(field_names[y].min, options.MaxY if options.MaxY else my*1.2)
 
 	plt.legend(loc='upper left')
 
 	print("Results Ready")
-	if out:
-		plt.savefig(out)
+	if options.out:
+		plt.savefig(options.out, bbox_inches='tight')
 	else:
 		plt.show()
@@ -142,4 +147,7 @@
 	parser.add_argument('-y', nargs='?', type=str, default="", help="Which field to use as the Y axis")
 	parser.add_argument('-x', nargs='?', type=str, default="", help="Which field to use as the X axis")
+	parser.add_argument('--logx', action='store_true', help="if set, makes the x-axis logscale")
+	parser.add_argument('--logy', action='store_true', help="if set, makes the y-axis logscale")
+	parser.add_argument('--MaxY', nargs='?', type=int, help="maximum value of the y-axis")
 
 	options =  parser.parse_args()
@@ -185,3 +193,3 @@
 
 
-	plot(data, wantx, wanty, options.out)
+	plot(data, wantx, wanty, options)
