From 40333dd77fecd8a2dec2e982a89678e0849bf3be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20B=2E=20Brandenburg?= Date: Fri, 26 Mar 2010 14:54:59 -0400 Subject: allow simple lines in gnuplot.py This thing keeps getting uglier... --- gnuplot.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gnuplot.py') diff --git a/gnuplot.py b/gnuplot.py index d32b3c5..9262069 100755 --- a/gnuplot.py +++ b/gnuplot.py @@ -56,8 +56,13 @@ def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, g('set key %s' % key) plot = [] for gr in graphs: - par = (gr[0], gr[1], gr[2], gr[3], style) if len(gr) == 4 else gr - plot += ["'%s' using %s:%s title '%s' with %s" % par] + if len(gr) == 4: + par = (gr[0], gr[1], gr[2], gr[3], style) + plot += ["'%s' using %s:%s title '%s' with %s" % par] + elif len(gr) == 5: + plot += ["'%s' using %s:%s title '%s' with %s" % gr] + elif len(gr) == 3: + plot += ["%s title '%s' with %s" % gr] if plot: g('plot ' + ', '.join(plot)) if format != 'show' and fname: -- cgit v1.2.2 From ede9fd4e5897cc235810facf7773260a96e18dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20B=2E=20Brandenburg?= Date: Sat, 27 Mar 2010 11:45:58 -0400 Subject: add support for logscale axis and literal plot commands --- gnuplot.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'gnuplot.py') diff --git a/gnuplot.py b/gnuplot.py index 9262069..62a6016 100755 --- a/gnuplot.py +++ b/gnuplot.py @@ -22,6 +22,7 @@ def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, yrange=None, xticks=None, yticks=None, key='below', + logscale=None, fname=None): g = CommandBuffer() if format == 'png': @@ -53,10 +54,15 @@ def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, g("set xtics %s, %s" % xticks) if yticks: g("set ytics %s, %s" % yticks) + if logscale: + g("set logscale %s" % logscale) g('set key %s' % key) plot = [] for gr in graphs: - if len(gr) == 4: + if type(gr) == str: + # literal plot command + plot.append(gr) + elif len(gr) == 4: par = (gr[0], gr[1], gr[2], gr[3], style) plot += ["'%s' using %s:%s title '%s' with %s" % par] elif len(gr) == 5: -- cgit v1.2.2 From c20875574e9c0107a39709319685bcfaa8f47fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20B=2E=20Brandenburg?= Date: Sat, 27 Mar 2010 20:08:28 -0400 Subject: allow logscales to be set for different axis --- gnuplot.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gnuplot.py') diff --git a/gnuplot.py b/gnuplot.py index 62a6016..9b5ae11 100755 --- a/gnuplot.py +++ b/gnuplot.py @@ -55,7 +55,11 @@ def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, if yticks: g("set ytics %s, %s" % yticks) if logscale: - g("set logscale %s" % logscale) + if type(logscale) == tuple: + for x in logscale: + g("set logscale %s" % x) + else: + g("set logscale %s" % logscale) g('set key %s' % key) plot = [] for gr in graphs: -- cgit v1.2.2 From 92e88bb922d5391e30cd5c506da9ebf74b1c0249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20B=2E=20Brandenburg?= Date: Sun, 28 Mar 2010 00:19:19 -0400 Subject: Introduce CSV-backed graph abstraction. Mostly to support errorbars. --- gnuplot.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'gnuplot.py') diff --git a/gnuplot.py b/gnuplot.py index 9b5ae11..925b4b3 100755 --- a/gnuplot.py +++ b/gnuplot.py @@ -16,6 +16,32 @@ class CommandBuffer(object): def __str__(self): return '\n'.join([str(x) for x in self.cmds]) +class FileGraph(object): + def __init__(self, fname, xcol=1, ycol=2, error=None, + title=None, + style=None): + self.fname = fname + self.xcol = xcol + self.ycol = ycol + self.error = error + self.title = title + self.style = style + + def __str__(self): + return self.get_command() + + def get_command(self, default_style=None): + if self.error: + using_txt = "%s:%s:%s" % (self.xcol, self.ycol, self.error) + style = self.style if self.style else "errorbars" + else: + using_txt = "%s:%s" % (self.xcol, self.ycol) + style = self.style if self.style else default_style + style_txt = " with %s" % style if style else "" + title_txt = " title '%s'" % self.title if self.title else "" + return "'%s' using %s%s%s" % \ + (self.fname, using_txt, title_txt, style_txt) + def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, format='show', term_opts=None, style='linespoints', xrange=None, @@ -65,7 +91,10 @@ def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, for gr in graphs: if type(gr) == str: # literal plot command - plot.append(gr) + plot.append(str(gr)) + elif type(gr) == FileGraph: + # formatter object + plot.append(gr.get_command(style)) elif len(gr) == 4: par = (gr[0], gr[1], gr[2], gr[3], style) plot += ["'%s' using %s:%s title '%s' with %s" % par] -- cgit v1.2.2