From 6469f7be7b5edf73b9ecd8d498199961a8be3dd9 Mon Sep 17 00:00:00 2001 From: Christopher Kenna Date: Tue, 18 Oct 2011 22:24:51 -0400 Subject: add png format, too --- plot_rtas12.py | 45 ++++++++++++++++++++++++++++++--------------- plot_rtas12_betaexp.py | 20 ++++++++++++-------- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/plot_rtas12.py b/plot_rtas12.py index f4deef9..5cbcabd 100755 --- a/plot_rtas12.py +++ b/plot_rtas12.py @@ -2,6 +2,7 @@ import sys import time +import optparse from os.path import basename from os import listdir @@ -27,6 +28,11 @@ COLS = {'plugin': 0, 'iqr_min': 12} +def parse_args(): + p = optparse.OptionParser(description='make graphs') + p.add_option('--paper', dest='paper', action='store_true', default=False) + return p.parse_args() + def usage(msg): print >>sys.stderr, msg sys.exit(1) @@ -56,11 +62,9 @@ def get_overhead_title(ov): 'LVLA-RELEASE': '(A)'} return OV[ov] -def set_plot_opts(p): +def set_plot_opts(opts, p): p.rounded_caps = True p.font = 'Helvetica' - p.font_size = '5pt' - p.size = ('8.5cm', '5.25cm') p.default_style = 'linespoints lw 2.5' p.default_style += ' smooth bezier' p.key = 'off' @@ -69,6 +73,16 @@ def set_plot_opts(p): p.xrange = (18, 122) p.yrange = (0, '') + if opts.paper: + ext = 'pdf' + p.size = ('8.5cm', '5.25cm') + p.font_size = '5pt' + else: + ext = 'png' + p.size = (1024, 768) + p.output = '{0}.{1}'.format(p.output, ext) + p.format = ext + for i, c in enumerate(p.curves): c.style = "linespoints ls %d" % (i + 1) @@ -141,10 +155,9 @@ def include_level_a_releases(data_dir, o_type, scheduler, ycol): return (f.name, f) -def plot_release(data_dir, ycol, title, fname): +def plot_release(opts, data_dir, ycol, title, fname): p = Plot() p.output = '{0}/{1}'.format(data_dir, fname) - p.format = 'pdf' refs = [] # need to save reference to file handle so it is not deleted for o_type in ['RELEASE', 'LVLA-RELEASE']: @@ -162,7 +175,7 @@ def plot_release(data_dir, ycol, title, fname): ycol=ycol, title=ti)] p.xlabel = 'number of tasks' p.ylabel = 'overhead (microseconds)' - set_plot_opts(p) + set_plot_opts(opts, p) if gnuplot_col('avg') == ycol: # make this graph's y-scale match the scale on the average-case # scheduling overhead graph because they are next to each other @@ -171,10 +184,9 @@ def plot_release(data_dir, ycol, title, fname): p.key = 'top left' p.gnuplot_exec() -def plot_sched(data_dir, ycol, title, fname): +def plot_sched(opts, data_dir, ycol, title, fname): p = Plot() p.output = '{0}/{1}'.format(data_dir, fname) - p.format = 'pdf' for o_type in ['SCHED', 'LVLA-SCHED']: for sched in SCHEDULERS: @@ -184,19 +196,22 @@ def plot_sched(data_dir, ycol, title, fname): ycol=ycol, title=ti)] p.xlabel = 'number of tasks' p.ylabel = 'overhead (microseconds)' - set_plot_opts(p) + set_plot_opts(opts, p) p.gnuplot_exec() def main(): - if len(sys.argv) < 2: + + opts, extra = parse_args() + + if len(extra) < 1: usage('missing args') - data_dir = sys.argv[1] - plot_sched(data_dir, gnuplot_col('max'), 'worst-case scheduling overhead', 'overhead=SCHED_type=MAX.pdf') - plot_release(data_dir, gnuplot_col('max'), 'worst-case release overhead', 'overhead=RELEASE_type=MAX.pdf') - plot_sched(data_dir, gnuplot_col('avg'), 'average-case scheduling overhead', 'overhead=SCHED_type=AVG.pdf') - plot_release(data_dir, gnuplot_col('avg'), 'average-case release overhead', 'overhead=RELEASE_type=AVG.pdf') + data_dir = extra[0] + plot_sched(opts, data_dir, gnuplot_col('max'), 'worst-case scheduling overhead', 'overhead=SCHED_type=MAX') + plot_release(opts, data_dir, gnuplot_col('max'), 'worst-case release overhead', 'overhead=RELEASE_type=MAX') + plot_sched(opts, data_dir, gnuplot_col('avg'), 'average-case scheduling overhead', 'overhead=SCHED_type=AVG') + plot_release(opts, data_dir, gnuplot_col('avg'), 'average-case release overhead', 'overhead=RELEASE_type=AVG') if __name__ == '__main__': main() diff --git a/plot_rtas12_betaexp.py b/plot_rtas12_betaexp.py index 11f29b3..2153222 100755 --- a/plot_rtas12_betaexp.py +++ b/plot_rtas12_betaexp.py @@ -43,11 +43,18 @@ def get_y_label(metric): return LABELS[metric] -def set_plot_opts(p): +def set_plot_opts(opts, p): p.rounded_caps = True p.font = 'Helvetica' - p.font_size = '5pt' - p.size = ('8.5cm', '5.25cm') + if opts.paper: + ext = 'pdf' + p.size = ('8.5cm', '5.25cm') + p.font_size = '5pt' + else: + ext = 'png' + p.size = (1024, 768) + p.output = '{0}.{1}'.format(p.output, ext) + p.format = ext p.default_style = 'linespoints lw 2.5' p.default_style += ' smooth bezier' p.monochrome = False @@ -66,16 +73,13 @@ def plot_metric(opts, dat_dir, metric, coin_prob, xr=None): """Plot metric for each level, enforcement pair at the specified probability. - .""" + """ # each coin value gets a plot p = Plot() p.output = '{0}/beta-exp-metric={1}-prob={2}'.format( dat_dir, metric, str(coin_prob).replace('.', '')) if xr is not None: p.output = '{0}-zoom=1'.format(p.output) - p.output = '{0}.pdf'.format(p.output) - - p.format = 'pdf' for (level, enforcement) in [(l, e) for l in ('c', 'b') for e in (1, 0)]: fname = '{0}/beta_be={1}_prob={2}.csv'.format(dat_dir, enforcement, coin_prob) @@ -88,7 +92,7 @@ def plot_metric(opts, dat_dir, metric, coin_prob, xr=None): p.curves += [c] p.xlabel = 'beta mean with probability {0}'.format(coin_prob) p.ylabel = get_y_label(metric) - set_plot_opts(p) + set_plot_opts(opts, p) if xr is not None: p.xrange = xr -- cgit v1.2.2