SimplyDraw - Stacking Graphs
Here you can see a typical situation which can make beneficial use of the stack
function. Whenever you have to draw several graphs with slightly changing parameters think about using stack
.
You just to give the graphs (or canvases, if that's the correct plural form) to stack
. The layout is done according to how you passed the graphs. stack
takes a list of lists, where the inner lists represent rows. This might sound confusing, but can be used very straightforward.
stack
can not only be used globally but also as the method of a canvas.
By the way, the graphs show trajectories of fractional Brownian motions with different fractions.
ga, gb, gh = -.2, 1.2, 1.3 n = 200 def k(j,k): s, t = j / float(n), k / float(n) return .5 * (s**a + t**a - (abs(t-s))**a) G = [] for a in [.3, .7, 1.3, 1.7]: g = mathxy(height=3, x=axis.linear(min=ga, max=gb, parter=None, manualticks=[tick(1)]), y=axis.linear(min=-gh, max=gh, parter=None, manualticks=[tick(-1), tick(1)])) K = fromfunction(k, (n, n)) X = zip([ i / float(n) for i in range(n)], multivariate_normal(zeros(n), K)) g.plot(data.list(X), [style.line()]) g.dolayout() x, y = g.pos(.3, -1) g.text(x, y, "$\\alpha=%.1f$" % a, [halign.left, valign.middle]) G.append(g) stack([[G[0], G[1]], [G[2], G[3]]])