diff options
author | Daniel Friesel <derf@finalrewind.org> | 2019-03-25 15:09:14 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2019-03-25 15:09:14 +0100 |
commit | 88960e8ddf9d26331fc30f31a1d692cbc7a7c39c (patch) | |
tree | e9271d35d54c9c94c00b5503bc5194738d00035c | |
parent | 0dbf26fcaa1fd2cf2a5f5fd6c8fe6ea1f4c917a6 (diff) |
plotter: Add output option to boxplot and plot_attribute
-rwxr-xr-x | lib/plotter.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/plotter.py b/lib/plotter.py index e4c7701..30b5b82 100755 --- a/lib/plotter.py +++ b/lib/plotter.py @@ -66,7 +66,7 @@ def plot_states_param(model, aggregate): mdata = [int(model['state'][key[0]]['power']['static']) for key in keys] boxplot(keys, data, 'Transition', 'µW', modeldata = mdata) -def plot_attribute(aggregate, attribute, attribute_unit = '', key_filter = lambda x: True): +def plot_attribute(aggregate, attribute, attribute_unit = '', key_filter = lambda x: True, **kwargs): """ Boxplot measurements of a single attribute according to the partitioning provided by aggregate. @@ -80,7 +80,7 @@ def plot_attribute(aggregate, attribute, attribute_unit = '', key_filter = lambd """ keys = list(filter(key_filter, sorted(aggregate.keys()))) data = [aggregate[key][attribute] for key in keys] - boxplot(keys, data, attribute, attribute_unit) + boxplot(keys, data, attribute, attribute_unit, **kwargs) def plot_substate_thresholds_p(model, aggregate): keys = [key for key in sorted(aggregate.keys()) if aggregate[key]['isa'] == 'state' and key[0] != 'UNINITIALIZED'] @@ -245,7 +245,7 @@ def plot_param_fit(function, name, fitfunc, funp, parameters, datatype, index, X plt.show() -def boxplot(ticks, measurements, xlabel = '', ylabel = '', modeldata = None): +def boxplot(ticks, measurements, xlabel = '', ylabel = '', modeldata = None, output = None): fig, ax1 = plt.subplots(figsize=(10,6)) fig.canvas.set_window_title('DriverEval') plt.subplots_adjust(left=0.1, right=0.95, top=0.95, bottom=0.1) @@ -311,4 +311,12 @@ def boxplot(ticks, measurements, xlabel = '', ylabel = '', modeldata = None): horizontalalignment='center', size='small', color='royalblue') - plt.show() + if output: + plt.savefig(output) + with open('{}.txt'.format(output), 'w') as f: + print('X Y', file=f) + for i, data in enumerate(measurements): + for value in data: + print('{} {}'.format(ticks[i], value), file=f) + else: + plt.show() |