1 Structure of modules and classes in the graph subdirectory
3 TODO: - separate all interface definitions from implemenations (and finish all interface definitions)
4 - remove __implements__; its confuses most source code readers
5 - description of data.py is not complete below
10 rational [a very basic and limited rational number type]
11 tick(rational) [tick position based on a rational number (includes interface definition)]
13 (contains two helper functions to build and handle a list of ticks: mergeticklists and maxlevels)
18 _Iparter [interface definition]
20 linear [parter for linear axes]
21 autolinear [automatic parter for linear axes (default parter for linear axes)]
23 preexp [helper class for defining tick positions on a logarithmic scale]
25 logarithmic(linparter) [parter for logarithmic axes]
26 autologarithmic(logparter) [automatic parter for logarithmix axes (default parter for logarithmic axes)]
28 shortcuts: - lin = linear
29 - autolin = autolinear
31 - autolog = autologarithmic
36 _Itexter [interface definition]
38 rational [implements _Itexter to create rational number labels]
39 decimal [implements _Itexter to create decimal labels]
40 exponential [implements _Itexter to create exponentential labels]
41 default [implements _Itexter by mixing decimal and exponential texter (default texter for regular axes)]
46 _Iaxispainter [interface definition]
47 _Iaxispos [interface definition]
49 axiscanvas(canvas.canvas) [canvas to draw axis on (includes interface definition)]
50 rotatetext [class to calculate rotation operation for a given tick direction (includes interface definition)]
52 _axispos [partially implements _Iaxispos interface]
53 pathaxispos(_axispos) [implements _Iaxispos for an arbitrary path]
55 _title [implements _Iaxis (shared task of plotting axis titles in derived axispainters)]
57 geometricseries(attr.changeattr) [a changeable attribute resulting in a geometric series]
58 ticklength(geometricseries) [geometric series for tick lengths]
60 plain(_title) [default axis painter for regular axes (linaxis, logaxis)]
61 linked(plain) [default axis painter for linked regular axes (turns off some features)]
63 subaxispos [implements _Iaxispos for subaxes, which occure in split axes and bar axes)]
65 split(_title) [default axis painter for split axes]
66 omitsubaxispainter [helper class for linksplitaxis argument handling]
67 linkedsplit(split) [default axis painter for linked split axes]
69 bar(_title) [default axis painter for bar axes]
70 linkedbar(bar) [default axis painter for linked bar axes]
75 cuberater [rater for values like the number of ticks etc. (includes interface definition)]
77 distancerater [rater for optimal distances of boxes (includes interface definition)]
79 rater [rater for ticks and axis layout (includes interface definition)]
81 linear [rater with predefined constructor arguments suitable for a linear axis]
83 logarithmic [rater with predefined constructor arguments suitable for a logarithmic axis]
85 shortcuts: - lin = linear
91 _Imap [interface definition]
92 _Iaxis [interface definition]
94 _linmap [implements _Imap for a linear axis]
95 _logmap [implements _Imap for a logarithmic axis]
97 _axis [partitionally implements _Iaxis; _Imap is missing to fully implement _Iaxis]
99 linear(_axis, _linmap) [implements _Iaxis for a linear axis]
100 logarithmic(_axis, _linmap) [implements _Iaxis for a logarithmic axis]
102 _linked [implements _Iaxis by linking to a regular axis instance, but not taking into account an axis divisor]
103 linked [implements _Iaxis by linking to a regular]
105 split [implements _Iaxis for a splitable axis]
106 linkedsplit(_linked) [implements _Iaxis by linking to a splitaxis instance]
108 bar [implements _Iaxis for a bar axis]
109 linkedbar(_linked) [implements _Iaxis by linking to a baraxis instance]
111 (helper function pathaxis to draw a axis at an arbitrary path)
113 shortcuts: - lin = linear
115 - pyx.graph.axis.linear = pyx.graph.axis.axis.linear
116 - pyx.graph.axis.lin = pyx.graph.axis.axis.lin
117 - pyx.graph.axis.logarithmic = pyx.graph.axis.axis.logarithmic
118 - pyx.graph.axis.log = pyx.graph.axis.axis.log
119 - pyx.graph.axis.linked = pyx.graph.axis.axis.linked
120 - pyx.graph.axis.split = pyx.graph.axis.axis.split
121 - pyx.graph.axis.linkedsplit = pyx.graph.axis.axis.linkedsplit
122 - pyx.graph.axis.bar = pyx.graph.axis.axis.bar
123 - pyx.graph.axis.linkedbar = pyx.graph.axis.axis.linkedbar
124 - pyx.graph.axis.pathaxis = pyx.graph.axis.axis.pathaxis
129 [interface definition missing]
131 class key [graph key painter]
136 [interface definition missing]
138 _style [collection of common operations performed by styles]
140 symbolline(_style) [style for drawing symbols with errorbars and lines]
141 line(symbolline) [reduction of symbollines to lines only]
142 symbol(symbolline) [reduction of symbollines to symbols with errorbars only]
143 text(symbol) [extend symbol style to show given text at the symbols]
144 arrow(_style) [draw arrows with given size and direction]
145 rect(_style) [draw rectangles with given color]
146 bar(_style) [draw bars in a bar graph]
151 [interface definition missing]
153 list [data from a list]
154 data [data from another data instance]
155 file [data from a file]
156 function [data from a function]
157 paramfunction [data from a parametric function]
162 [interface definition missing -- we don't really have interfaces here, but we may introduce some generic
163 behaviour of all graphs (domethods, access to axes and positions, etc.)]
165 lineaxispos [implements _Iaxispos for a straight line]
166 lineaxisposlinegrid(lineaxispos) [like _Iaxispos but adds grid lines for a x-y-graph]
167 graphxy(canvas.canvas) [x-y-graph]
169 shortcuts: - pyx.graph.graphxy = pyx.graph.graph.graphxy
172 timeaxis.py (experimental code, needs python 2.3)
174 _timemap [implements _Imap for datetime instances]
175 timetick(datetime.datetime) [tick position based on datetime]
176 timetexter [implements _Itexter as a primitiv texter for datetime instances]
177 timeaxis(axis._axis, _timemap) [implements _Iaxis for a time axis]
179 NOTE: The timeaxis should be kept as separately as possible. It needs Python 2.3 and dateutils
180 (dateutils is not yet needed while we currently also lack (auto-)partitioning of a timeaxis;
181 there is an ongoing discussion with Gustavo Niemeyer about some patches).