8
8
import plotly .express as px
9
9
10
10
from command .command import Command
11
- from component .figure_saver import FigType , FigureSaver
11
+ from component .figure_saver import FigType , FigureProps , FigureSaver
12
12
13
13
14
14
class Grapher (Command ):
@@ -45,22 +45,19 @@ def run(self) -> None:
45
45
self .create_graphs (runtimes )
46
46
47
47
def create_graphs (self , runtimes : pd .DataFrame ) -> None :
48
- self .saver .save (
49
- name = "runtime_language" ,
50
- fig = runtimes .boxplot (column = "runtime" , by = "language" , figsize = (8 , 8 )),
51
- fig_type = FigType .MATPLOTLIB ,
52
- )
53
- self .saver .save (
54
- name = "runtime_year" ,
55
- fig = runtimes .boxplot (column = "runtime" , by = "year" , figsize = (10 , 8 )),
56
- fig_type = FigType .MATPLOTLIB ,
57
- )
48
+ self .saver .save (self .year_percentage (runtimes .copy ()))
49
+ self .saver .save (self .runtime_language (runtimes .copy ()))
50
+ self .saver .save (self .runtime_year (runtimes .copy ()))
51
+ self .saver .save (self .cumulative_sum (runtimes .copy ()))
52
+ self .saver .save (self .usage_langauage (runtimes .copy ()))
53
+ self .saver .save (self .usage_langauage_yearly (runtimes .copy ()))
54
+ self .saver .save (self .overhead (runtimes .copy ()))
58
55
59
- with_all : pd .DataFrame = runtimes . copy ()
60
- with_all ["all" ] = "Time in milliseconds"
61
- with_all ["runtime" ] = runtimes ["runtime" ].round (0 )
56
+ def year_percentage ( self , runtimes : pd .DataFrame ) -> FigureProps :
57
+ runtimes ["all" ] = "Time in milliseconds"
58
+ runtimes ["runtime" ] = runtimes ["runtime" ].round (0 )
62
59
yearly_runtimes = px .sunburst (
63
- with_all ,
60
+ runtimes ,
64
61
path = ["all" , "year" , "day" ],
65
62
values = "runtime" ,
66
63
width = 1000 ,
@@ -70,27 +67,59 @@ def create_graphs(self, runtimes: pd.DataFrame) -> None:
70
67
textinfo = "label+percent parent+value" ,
71
68
sort = False ,
72
69
)
73
- self . saver . save (
70
+ return FigureProps (
74
71
name = "year_percentage" ,
75
72
fig = yearly_runtimes ,
76
73
fig_type = FigType .PLOTLY ,
77
74
)
78
75
76
+ def runtime_language (self , runtimes : pd .DataFrame ) -> FigureProps :
77
+ return FigureProps (
78
+ name = "runtime_language" ,
79
+ fig = runtimes .boxplot (
80
+ column = "runtime" ,
81
+ by = "language" ,
82
+ figsize = (8 , 8 ),
83
+ ),
84
+ fig_type = FigType .MATPLOTLIB ,
85
+ )
86
+
87
+ def runtime_year (self , runtimes : pd .DataFrame ) -> FigureProps :
88
+ return FigureProps (
89
+ name = "runtime_year" ,
90
+ fig = runtimes .boxplot (
91
+ column = "runtime" ,
92
+ by = "year" ,
93
+ figsize = (10 , 8 ),
94
+ ),
95
+ fig_type = FigType .MATPLOTLIB ,
96
+ )
97
+
98
+ def cumulative_sum (self , runtimes : pd .DataFrame ) -> FigureProps :
79
99
runtimes_only : pd .DataFrame = runtimes [["runtime" ]]
80
100
sorted_runtimes = runtimes_only .sort_values ("runtime" ).reset_index (drop = True )
81
- self . saver . save (
101
+ return FigureProps (
82
102
name = "cumulative_sum" ,
83
- fig = sorted_runtimes .cumsum ().plot .line (legend = False , figsize = (8 , 6 )),
103
+ fig = sorted_runtimes .cumsum ().plot .line (
104
+ legend = False ,
105
+ figsize = (8 , 6 ),
106
+ ),
84
107
fig_type = FigType .MATPLOTLIB ,
85
108
)
86
109
110
+ def usage_langauage (self , runtimes : pd .DataFrame ) -> FigureProps :
87
111
language_counts = runtimes ["language" ].value_counts ()
88
- self . saver . save (
112
+ return FigureProps (
89
113
name = "usage_langauage" ,
90
- fig = language_counts .plot .pie (y = 1 , autopct = "%.2f" , figsize = (8 , 6 )),
114
+ fig = language_counts .plot .pie (
115
+ y = 1 ,
116
+ autopct = "%.2f" ,
117
+ figsize = (8 , 6 ),
118
+ ),
91
119
fig_type = FigType .MATPLOTLIB ,
92
120
)
93
121
122
+ def usage_langauage_yearly (self , runtimes : pd .DataFrame ) -> FigureProps :
94
123
yearly_usage = pd .pivot_table (
95
124
runtimes ,
96
125
index = "year" ,
@@ -99,9 +128,25 @@ def create_graphs(self, runtimes: pd.DataFrame) -> None:
99
128
aggfunc = "count" ,
100
129
fill_value = 0 ,
101
130
)
102
- self . saver . save (
131
+ return FigureProps (
103
132
name = "usage_langauage_yearly" ,
104
- fig = yearly_usage .plot .bar (stacked = True , legend = False , figsize = (10 , 6 )),
133
+ fig = yearly_usage .plot .bar (
134
+ stacked = True ,
135
+ legend = False ,
136
+ figsize = (10 , 6 ),
137
+ ),
105
138
fig_type = FigType .MATPLOTLIB ,
106
139
legend = dict (loc = "upper center" , ncol = 5 ),
107
140
)
141
+
142
+ def overhead (self , runtimes : pd .DataFrame ) -> FigureProps :
143
+ runtimes ["overhead" ] = runtimes ["execution" ] - runtimes ["runtime" ]
144
+ return FigureProps (
145
+ name = "overhead_language" ,
146
+ fig = runtimes .boxplot (
147
+ column = "overhead" ,
148
+ by = "language" ,
149
+ figsize = (8 , 8 ),
150
+ ),
151
+ fig_type = FigType .MATPLOTLIB ,
152
+ )
0 commit comments