From: Dan Reinholz <xaenn@ya...>  20080608 20:49:55

Hello all, I'm a bit new to pyx (I was previously a gnuplot user) and have been struggling with this problem for awhile. I'm working on generating some graphs for calculus, and I'm trying to illustrate the formal definition of the limit. In this I want to illustrate a box that shows which range of x values stays within the error tolerance. My code is: from pyx import * from pyx.graph import axis def f(x): return pow((x + 1),3) + 1 a,b,c = 0.5874,1.28943,1 ticksx = [graph.axis.tick.tick(c, label="$x_0$")] ticksy = [graph.axis.tick.tick(f(a), label="$L  \\varepsilon$"), graph.axis.tick.tick(f(c), label="$L$"), graph.axis.tick.tick(f(b), label="$L + \\varepsilon$")] g = graph.graphxy(width=8, x=axis.linear(min=0, max=1.5, title="$x$",manualticks=ticksx,parter=None), y=axis.linear(title="$f(x)$",manualticks=ticksy,parter=None)) d=g.plot(graph.data.function("y(x)=(x+1)**3 + 1",points=1000)) g.finish() x1,y1 = g.pos(a,f(a)) x2,y2 = g.pos(b,f(b)) g.stroke(path.rect(x1,y1,x2x1,y2y1),[deco.filled([color.gray(0.8)]) ]) g.stroke(g.ygridpath(f(a)), [style.linestyle.dashed,style.linewidth.Thin]) g.stroke(g.xgridpath(a), [style.linestyle.dashed,style.linewidth.Thin]) g.stroke(g.ygridpath(f(b)), [style.linestyle.dashed,style.linewidth.Thin]) g.stroke(g.xgridpath(b), [style.linestyle.dashed,style.linewidth.Thin]) g.stroke(g.ygridpath(f(c)), [style.linewidth.Thin]) g.stroke(g.xgridpath(c), [style.linewidth.Thin]) g.writeEPSfile("limit_definition") which works fine except for that I want the box to be behind the graph rather than on top of it. I've thought of a few solutions, but haven't been able to successfully implement any of them (I would actually love to know how to do all of them, but I don't want to be too greedy). 1. Knowing how to plot the filled rectangle beneath the graph would solve the problem. 2. Knowing how to make the fill color transparent. 3. Knowing how to use a different pattern for the fill so that the graph of the function still shows beneath it. If anyone could please show me how to modify my existing code or otherwise point me in the right direction, it would be extremely helpful. I am not very familiar with python, so I imagine syntax is part of my problem. Many thanks for any help that can be offered. Regards, Daniel 