diff options
author | Andrea Bastoni <bastoni@sprg.uniroma2.it> | 2010-04-09 00:30:04 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@sprg.uniroma2.it> | 2010-04-09 00:30:04 -0400 |
commit | cf47870875e03488442ed39d96acfddfa2993f02 (patch) | |
tree | 02c1957b94dafc20cd19c3d2ed1d3c82a3111c43 /gnuplot.py | |
parent | 36b6614fa9ea3c2656aedb385c5c4154917aa618 (diff) | |
parent | 5a908690888395010b8a6615bc6ee3185920f2dc (diff) |
Merge branch 'master' of cvs.cs.unc.edu:/cvs/proj/litmus/repo/simple-gnuplot-wrapper
Conflicts:
gnuplot.py
- Merge to add my "non clean" (ehm.. crappy) support to errorbars in plot_pm.py
Diffstat (limited to 'gnuplot.py')
-rwxr-xr-x | gnuplot.py | 48 |
1 files changed, 44 insertions, 4 deletions
@@ -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 | ||
19 | class 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 | |||
19 | def gnuplot_cmd(graphs, title=None, ylabel=None, xlabel=None, | 45 | def 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: |