arminstraub.com

Stacking Graphs

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]]])