2
2
from argparse import ArgumentParser
3
3
from pathlib import Path
4
4
from typing import List , Optional
5
+ import matplotlib .pyplot as plt
6
+ import pandas as pd
5
7
6
8
7
9
def get_arg_parser () -> ArgumentParser :
@@ -10,6 +12,7 @@ def get_arg_parser() -> ArgumentParser:
10
12
parser .add_argument ("--title" )
11
13
parser .add_argument ("--size" , nargs = 2 , type = float )
12
14
parser .add_argument ("--save_dir" , "--save" , type = Path )
15
+ parser .add_argument ("--rolling" , "-r" , type = int )
13
16
return parser
14
17
15
18
@@ -24,20 +27,19 @@ def read_data(input_file: Path):
24
27
return data
25
28
26
29
27
- def plot (data , title = None , size = None ):
28
- import matplotlib .pyplot as plt
29
-
30
+ def plot (data , title = None , size = None , rolling = None ):
30
31
fig = plt .figure (figsize = size )
31
32
ax = fig .add_subplot ()
32
33
33
34
cmap = plt .get_cmap ("tab20" ).colors
34
35
cmap = cmap [::2 ] + cmap [1 ::2 ]
35
36
36
37
for i , dat in enumerate (data ):
37
- latency_data = dat ["Latency (generate breakdown)" ]
38
+ latency_data = pd .Series ({int (k ): v * 1000 for k , v in dat ["Latency (generate breakdown)" ].items ()})
39
+ if rolling is not None :
40
+ latency_data = latency_data .rolling (rolling , center = True , min_periods = 1 ).mean ()
38
41
ax .plot (
39
- [int (k ) for k in latency_data .keys ()],
40
- [v * 1000 for v in latency_data .values ()],
42
+ latency_data ,
41
43
label = dat ["Setting" ],
42
44
linewidth = 1 ,
43
45
color = cmap [i ],
@@ -67,7 +69,7 @@ def main(argv: Optional[List[str]] = None) -> None:
67
69
except ValueError :
68
70
title = dirname
69
71
70
- fig = plot (data , title , args .size )
72
+ fig = plot (data , title , args .size , args . rolling )
71
73
fig .show ()
72
74
if args .save_dir :
73
75
save_path = (args .save_dir / dirname ).with_suffix (".jpg" )
0 commit comments