aboutsummaryrefslogtreecommitdiffstats
path: root/gnuplot.py
diff options
context:
space:
mode:
Diffstat (limited to 'gnuplot.py')
-rwxr-xr-xgnuplot.py48
1 files changed, 44 insertions, 4 deletions
diff --git a/gnuplot.py b/gnuplot.py
index 4a34d1f..2604cb0 100755
--- a/gnuplot.py
+++ b/gnuplot.py
@@ -16,12 +16,39 @@ class CommandBuffer(object):
16 def __str__(self): 16 def __str__(self):
17 return '\n'.join([str(x) for x in self.cmds]) 17 return '\n'.join([str(x) for x in self.cmds])
18 18
19class FileGraph(object):
20 def __init__(self, fname, xcol=1, ycol=2, error=None,
21 title=None,
22 style=None):
23 self.fname = fname
24 self.xcol = xcol
25 self.ycol = ycol
26 self.error = error
27 self.title = title
28 self.style = style
29
30 def __str__(self):
31 return self.get_command()
32
33 def get_command(self, default_style=None):
34 if self.error:
35 using_txt = "%s:%s:%s" % (self.xcol, self.ycol, self.error)
36 style = self.style if self.style else "errorbars"
37 else:
38 using_txt = "%s:%s" % (self.xcol, self.ycol)
39 style = self.style if self.style else default_style
40 style_txt = " with %s" % style if style else ""
41 title_txt = " title '%s'" % self.title if self.title else ""
42 return "'%s' using %s%s%s" % \
43 (self.fname, using_txt, title_txt, style_txt)
44
19def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, 45def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None,
20 format='show', term_opts=None, 46 format='show', term_opts=None,
21 style='linespoints', xrange=None, 47 style='linespoints', xrange=None,
22 yrange=None, 48 yrange=None,
23 xticks=None, yticks=None, 49 xticks=None, yticks=None,
24 key='below', 50 key='below',
51 logscale=None,
25 fname=None): 52 fname=None):
26 g = CommandBuffer() 53 g = CommandBuffer()
27 if format == 'png': 54 if format == 'png':
@@ -57,18 +84,31 @@ def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None,
57 g("set xtics %s, %s" % xticks) 84 g("set xtics %s, %s" % xticks)
58 if yticks: 85 if yticks:
59 g("set ytics %s, %s" % yticks) 86 g("set ytics %s, %s" % yticks)
87 if logscale:
88 if type(logscale) == tuple:
89 for x in logscale:
90 g("set logscale %s" % x)
91 else:
92 g("set logscale %s" % logscale)
60 g('set key %s' % key) 93 g('set key %s' % key)
61 plot = [] 94 plot = []
62 for gr in graphs: 95 for gr in graphs:
63 if len(gr) == 4: 96 if type(gr) == str:
97 # literal plot command
98 plot.append(str(gr))
99 elif type(gr) == FileGraph:
100 # formatter object
101 plot.append(gr.get_command(style))
102 elif len(gr) == 4:
64 par = (gr[0], gr[1], gr[2], gr[3], style) 103 par = (gr[0], gr[1], gr[2], gr[3], style)
65 plot += ["'%s' using %s:%s title '%s' with %s" % par] 104 plot += ["'%s' using %s:%s title '%s' with %s" % par]
66 elif len(gr) == 6: 105 elif len(gr) == 6:
67 par = (gr[0], gr[1], gr[2], gr[3], gr[4], style, gr[5]) 106 par = (gr[0], gr[1], gr[2], gr[3], gr[4], style, gr[5])
68 plot += ["'%s' using %s:%s:%s:%s with %s title '%s'" % par] 107 plot += ["'%s' using %s:%s:%s:%s with %s title '%s'" % par]
69 else: 108 elif len(gr) == 5:
70 par = gr 109 plot += ["'%s' using %s:%s title '%s' with %s" % gr]
71 plot += ["'%s' using %s:%s title '%s' with %s" % par] 110 elif len(gr) == 3:
111 plot += ["%s title '%s' with %s" % gr]
72 if plot: 112 if plot:
73 g('plot ' + ', '.join(plot)) 113 g('plot ' + ', '.join(plot))
74 if format != 'show' and fname: 114 if format != 'show' and fname: