summaryrefslogtreecommitdiff
path: root/bin/pychart/error_bar.py
diff options
context:
space:
mode:
authorpinky <>2006-12-07 13:41:40 +0000
committerpinky <>2006-12-07 13:41:40 +0000
commit004a0b996ff8f269451e07346f71a129a1f3fbaf (patch)
tree48f43c1fc2ca4c1f4d5648e7e73553d3f4ccae06 /bin/pychart/error_bar.py
New trunk
bzr revid: pinky-3f10ee12cea3c4c75cef44ab04ad33ef47432907
Diffstat (limited to 'bin/pychart/error_bar.py')
-rw-r--r--bin/pychart/error_bar.py159
1 files changed, 159 insertions, 0 deletions
diff --git a/bin/pychart/error_bar.py b/bin/pychart/error_bar.py
new file mode 100644
index 00000000000..6abecffdb19
--- /dev/null
+++ b/bin/pychart/error_bar.py
@@ -0,0 +1,159 @@
+#
+# Copyright (C) 2000-2005 by Yasushi Saito (yasushi.saito@gmail.com)
+#
+# Jockey is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2, or (at your option) any
+# later version.
+#
+# Jockey is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+import tick_mark
+import line_style
+import pychart_util
+import chart_object
+import fill_style
+import types
+import error_bar_doc
+import object_set
+from pychart_types import *
+
+__doc__ = """Pychart offers several styles of error bars. Some of them
+only displays the min/max confidence interval, while others can display
+quartiles in addition to min/max."""
+
+class T(chart_object.T):
+ keys = {}
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ pass
+
+# Two horizontal lines at min & max locations.
+class error_bar1(T):
+ __doc__ = error_bar_doc.doc_1
+ keys = {"tic_len" : (UnitType, 10, "Length of the horizontal bars"),
+ "line_style": (line_style.T, line_style.default, "")
+ }
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ def draw(self, can, loc, min, max, qmin = None, qmax = None):
+ x = loc[0]
+ y = min
+ can.line(self.line_style, x-self.tic_len/2.0, y, x+self.tic_len/2.0, y)
+ y = max
+ can.line(self.line_style, x-self.tic_len/2.0, y, x+self.tic_len/2.0, y)
+
+class error_bar2(T):
+ __doc__ = error_bar_doc.doc_2
+ keys = {"tic_len" : (UnitType, 3,
+ "The length of the horizontal bars"),
+ "hline_style": (line_style.T, line_style.default,
+ "The style of the horizontal bars."),
+ "vline_style": (line_style.T, None,
+ "The style of the vertical bar.")
+ }
+
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ def draw(self, can, loc, min, max, qmin = None, qmax = None):
+ vline_style = self.vline_style
+ if not vline_style:
+ vline_style = self.hline_style
+ x = loc[0]
+ y1 = min
+ can.line(self.hline_style, x-self.tic_len/2.0, y1, x+self.tic_len/2.0, y1)
+ y2 = max
+ can.line(self.hline_style, x-self.tic_len/2.0, y2, x+self.tic_len/2.0, y2)
+ can.line(vline_style, x, y1, x, y2)
+
+class error_bar3(T):
+ # Tufte style
+ __doc__ = "This style is endorsed by the Tufte's books. " \
+ + error_bar_doc.doc_3
+ keys = { "line_style": (line_style.T, line_style.default, "")
+ }
+
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ def draw(self, can, loc, min, max, qmin, qmax):
+ x = loc[0]
+ can.line(self.line_style, x, min, x, qmin)
+ can.line(self.line_style, x, qmax, x, max)
+
+class error_bar4(T):
+ __doc__ = error_bar_doc.doc_4
+ keys = { "line_style": (line_style.T, line_style.default, ""),
+ "fill_style": (fill_style.T, fill_style.gray70, ""),
+ "box_width": (UnitType, 4, ""),
+ "tic_len": (UnitType, 4, "")
+ }
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ def draw(self, can, loc, min, max, qmin, qmax):
+ x = loc[0]
+ style = self.line_style
+ y1 = min
+ can.line(style, x-self.tic_len/2.0, y1, x+self.tic_len/2.0, y1)
+ y2 = max
+ can.line(style, x-self.tic_len/2.0, y2, x+self.tic_len/2.0, y2)
+ can.line(style, x, y1, x, y2)
+
+ can.rectangle(style, self.fill_style,
+ x-self.box_width/2.0, qmin,
+ x+self.box_width/2.0, qmax)
+
+# vertical line
+class error_bar5(T):
+ __doc__ = error_bar_doc.doc_5
+ keys = { "line_style": (line_style.T, line_style.default, "")
+ }
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ def draw(self, can, loc, min, max, qmin = None, qmax = None):
+ x = loc[0]
+ y = loc[1]
+
+ min = (min - y) *1 + y
+ max = (max - y) *1+ y
+ can.line(self.line_style, x, min, x, max)
+
+# a box
+class error_bar6(T):
+ __doc__ = error_bar_doc.doc_6
+ keys = { "line_style": (line_style.T, line_style.default, ""),
+ "fill_style": (fill_style.T, fill_style.gray70, ""),
+ "center_line_style": (line_style.T, line_style.T(width=0.5), ""),
+ "box_width": (UnitType, 4, ""),
+ }
+##AUTOMATICALLY GENERATED
+
+##END AUTOMATICALLY GENERATED
+ def draw(self, can, loc, min, max, qmin = None, qmax = None):
+ x = loc[0]
+ y = loc[1]
+
+ can.rectangle(self.line_style, self.fill_style,
+ x - self.box_width / 2.0, min,
+ x + self.box_width / 2.0, max)
+ can.line(self.center_line_style,
+ x - self.box_width/2.0, (min+max)/2.0,
+ x + self.box_width/2.0, (min+max)/2.0)
+
+bar1 = error_bar1()
+bar2 = error_bar2()
+bar3 = error_bar3()
+bar4 = error_bar4()
+bar5 = error_bar5()
+bar6 = error_bar6()
+
+standards = object_set.T(bar1, bar2, bar3, bar4, bar5, bar6)
+