-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathplot_results.py
More file actions
57 lines (44 loc) · 1.86 KB
/
plot_results.py
File metadata and controls
57 lines (44 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import argparse
import json
import re
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
def parse_args():
parser = argparse.ArgumentParser(description='Plot benchmark results.', formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('benchmarkfile', type=str, help='Json file containing benchmark results')
#parser.add_argument('tests', type=str, help='Directory containing tracker result files')
#parser.add_argument('--loglevel', type=str, help='Log level', default='info')
#parser.add_argument('--fmt', type=str, help='Data format', default='mot15-2D')
#parser.add_argument('--solver', type=str, help='LAP solver to use')
return parser.parse_args()
def build_dataframe(args):
dre = re.compile(r"'(.*)'")
with open(args.benchmarkfile) as f:
data = json.load(f)
events = []
for b in data['benchmarks']:
ei = b['extra_info']
dtype = dre.search(ei['scalar']).group(1)
events.append(('{}x{}'.format(ei['size'][0], ei['size'][1]), ei['solver'], dtype, b['stats']['mean'], b['stats']['stddev']))
return pd.DataFrame(events, columns=['matrix-size', 'solver', 'scalar', 'mean-time', 'stddev'])
def draw_plots(df):
sns.set_style("whitegrid")
for s, g in df.groupby('scalar'):
print(g)
plt.figure(figsize=(8, 5.5))
title='Benchmark results for dtype={}'.format(s)
ax = sns.barplot(x='mean-time', y='matrix-size', hue='solver', data=g, errwidth=0, palette="muted")
ax.set_xscale("log")
ax.set_xlabel('mean-time (sec)')
plt.legend(loc='upper right')
plt.title(title)
plt.tight_layout()
plt.savefig('benchmark-dtype-{}.png'.format(s), transparent=True, )
plt.show()
def main():
args = parse_args()
df = build_dataframe(args)
draw_plots(df)
if __name__ == '__main__':
main()