## Re[2]: [PyX-user] What's wrong with this picture?

 Re[2]: [PyX-user] What's wrong with this picture? From: Alan G Isaac - 2006-02-26 18:09:34 ```On Sun, 26 Feb 2006, Michael Schindler apparently wrote: > What happened, is that the "arclength" 3.1415 you inserted > above, is bigger than the total arclength of 1.25 of the > circle. Therefore, you get a point that is extrapolated > from the very last path element the circle consists of > (This is probably a short closing line) This might best, but with circles I guess I would have expected to wrap around (mod arclength). > This is what [Gary] wanted: > x, y = circle.at(0.) > x1, y1 = circle.at(0.5*circle.arclen()) > because the standard parameterisation is in arclength. Suggestion: a convenience method 'at_degress' or 'at_radians' for circles. (Might be nice for arcs too ...) Cheers, Alan Isaac ```

 [PyX-user] Bar graphs in negative direction? From: Markus Meyer - 2006-02-23 13:58:38 ```Hi list, I'd like to have a bar-graph which has a line for y=0 in the middle, and bars above and under the line. However, a small test for this functionality looks totally wrong. What gives? from pyx import * g = graph.graphxy(width=8, x=graph.axis.bar()) g.plot(graph.data.list([(0,-2), (1, -3), (2, 5), (3, -4)], xname=0, y=2), [graph.style.bar()]) g.writePDFfile("bar") Markus ```
 Re: [PyX-user] Bar graphs in negative direction? From: Andre Wobst - 2006-02-23 14:10:31 ```Hi Markus, On 23.02.06, Markus Meyer wrote: > I'd like to have a bar-graph which has a line for y=0 in the middle, and > bars above and under the line. However, a small test for this > functionality looks totally wrong. What gives? The bar style needs a bar position as provided by the parpos style. Unfortunately this style by default always start bars at the baseline. Thus you have to do: > from pyx import * > > g = graph.graphxy(width=8, x=graph.axis.bar()) > g.plot(graph.data.list([(0,-2), (1, -3), (2, 5), (3, -4)], xname=0, y=2), > [graph.style.bar()]) [graph.style.barpos(fromvalue=0), graph.style.bar()]) > g.writePDFfile("bar") HTH, André -- by _ _ _ Dr. André Wobst / \ \ / ) wobsta@..., http://www.wobsta.de/ / _ \ \/\/ / PyX - High quality PostScript and PDF figures (_/ \_)_/\_/ with Python & TeX: visit http://pyx.sourceforge.net/ ```
 Re: [PyX-user] Bar graphs in negative direction? From: Markus Meyer - 2006-02-23 15:11:25 ```Andre Wobst schrieb: >Hi Markus, > >On 23.02.06, Markus Meyer wrote: > > >>I'd like to have a bar-graph which has a line for y=0 in the middle, and >>bars above and under the line. However, a small test for this >>functionality looks totally wrong. What gives? >> >> > >The bar style needs a bar position as provided by the parpos style. >Unfortunately this style by default always start bars at the baseline. > > Works like a charm, thank you! Another question: I want to add a custom axis to the bar graph, so that the axis shows a continuous value and not the bar's names. I tried the following: from pyx import * import random g = graph.graphxy(width=8, x=graph.axis.bar(painter=None), x3=graph.axis.lin(min=0, max=10, title="\$t [s]\$")) g.plot(graph.data.list([(i,random.random()) for i in xrange(0,20)], xname=0, y=2), [graph.style.bar()]) g.writePDFfile("bar") Can I change this so the x3 axis is drawn where normally the bar axis would be? TIA Markus ```
 Re: [PyX-user] Bar graphs in negative direction? From: Andre Wobst - 2006-02-23 15:34:36 ```On 23.02.06, Markus Meyer wrote: > Another question: I want to add a custom > axis to the bar graph, so that the axis shows a continuous value and not > the bar's names. I tried the following: > > from pyx import * > import random > > g = graph.graphxy(width=8, > x=graph.axis.bar(painter=None), > x3=graph.axis.lin(min=0, max=10, title="\$t [s]\$")) > g.plot(graph.data.list([(i,random.random()) for i in xrange(0,20)], > xname=0, y=2), [graph.style.bar()]) > g.writePDFfile("bar") > > Can I change this so the x3 axis is drawn where normally the bar axis > would be? The distances between axes is a global graph property. (Maybe that's a bad decision and should be changed, but it's this way ever since I started the graph module (really a long time ago) and nobody *ever* complained so far.) So just add "axesdist=0" to the graph constructor and be happy ... ;-) BTW: You will not get a linked axis x4 (containing the ticks). Unfortunately where is no easy way in PyX 0.8.1 (and below) to do this, but in the current CVS head we can easily create all kind of linked axes within a graph, cyclic between graphs etc. Another note: I urgently request you do differentiate between bar graphs and histograms. Bar graphs "live" on a discrete axis and histograms on a continuous axis. While we didn't had a histrogram style for some time while already having bar graphs, people started to missuse bar graphs for histograms. It works in the sense that you can create whatever output you want, but I don't like it at all. André -- by _ _ _ Dr. André Wobst / \ \ / ) wobsta@..., http://www.wobsta.de/ / _ \ \/\/ / PyX - High quality PostScript and PDF figures (_/ \_)_/\_/ with Python & TeX: visit http://pyx.sourceforge.net/ ```
 Re[2]: [PyX-user] Bar graphs in negative direction? From: Alan G Isaac - 2006-02-24 21:36:33 ```On Thu, 23 Feb 2006, Andre Wobst apparently wrote: > The bar style needs a bar position as provided by the > barpos style. Unfortunately this style by default always > start bars at the baseline. Perfect fix. But the default is verys surprising. Cheers, Alan Isaac ```
 [PyX-user] What's wrong with this picture? From: Gary - 2006-02-26 16:40:40 ```Newbie, here. Consider the script below. I expected the second line, the one to x1,y1, to hit the circle due west of center. When I run the script, the end of the line is far above the circle. What am I misunderstanding? Also, let me know if there is a more elegant syntax. thanks, -gary ------------------------------------------------------------------- from pyx import * from math import pi c = canvas.canvas() circle = path.circle(2,2,.2) x, y = circle.at(0.) x1, y1 = circle.at(pi) c.stroke(path.path(path.moveto(0,0), path.lineto(x, y))) c.stroke(path.path(path.moveto(0,0), path.lineto(x1, y1))) c.stroke(circle) c.writeEPSfile("test") ```
 Re: [PyX-user] What's wrong with this picture? From: Michael Schindler - 2006-02-26 17:02:27 ```Hello Gary, On 26.02.06, Gary wrote: > Consider the script below. I expected the second line, the one to > x1,y1, to hit the circle due west of center. When I run the script, the > end of the line is far above the circle. > > What am I misunderstanding? > > Also, let me know if there is a more elegant syntax. > > thanks, > -gary > > ------------------------------------------------------------------- > from pyx import * > from math import pi > > c = canvas.canvas() > > circle = path.circle(2,2,.2) > > x, y = circle.at(0.) > x1, y1 = circle.at(pi) The circle is a general path at this point, thus not parameterised by an angle but by either the arclength or by the generic parameters of the Bezier curves it consists of. What happened, is that the "arclength" 3.1415 you inserted above, is bigger than the total arclength of 1.25 of the circle. Therefore, you get a point that is extrapolated from the very last path element the circle consists of (This is probably a short closing line) This is what you wanted: x, y = circle.at(0.) x1, y1 = circle.at(0.5*circle.arclen()) because the standard parameterisation is in arclength. > c.stroke(path.path(path.moveto(0,0), path.lineto(x, y))) > c.stroke(path.path(path.moveto(0,0), path.lineto(x1, y1))) > c.stroke(circle) > > c.writeEPSfile("test") > Best, Michael. -- "A mathematician is a device for turning coffee into theorems" Paul Erdös. ```
 Re[2]: [PyX-user] What's wrong with this picture? From: Alan G Isaac - 2006-02-26 18:09:34 ```On Sun, 26 Feb 2006, Michael Schindler apparently wrote: > What happened, is that the "arclength" 3.1415 you inserted > above, is bigger than the total arclength of 1.25 of the > circle. Therefore, you get a point that is extrapolated > from the very last path element the circle consists of > (This is probably a short closing line) This might best, but with circles I guess I would have expected to wrap around (mod arclength). > This is what [Gary] wanted: > x, y = circle.at(0.) > x1, y1 = circle.at(0.5*circle.arclen()) > because the standard parameterisation is in arclength. Suggestion: a convenience method 'at_degress' or 'at_radians' for circles. (Might be nice for arcs too ...) Cheers, Alan Isaac ```
 Re: [PyX-user] What's wrong with this picture? From: Gary - 2006-02-26 18:28:49 ```Michael Schindler wrote: >Hello Gary, > >On 26.02.06, Gary wrote: > > >>Consider the script below. I expected the second line, the one to >>x1,y1, to hit the circle due west of center. When I run the script, the >>end of the line is far above the circle. >> >>What am I misunderstanding? >> >>Also, let me know if there is a more elegant syntax. >> >>thanks, >>-gary >> >>------------------------------------------------------------------- >>from pyx import * >>from math import pi >> >>c = canvas.canvas() >> >>circle = path.circle(2,2,.2) >> >>x, y = circle.at(0.) >>x1, y1 = circle.at(pi) >> >> > >The circle is a general path at this point, thus not parameterised by >an angle but by either the arclength or by the generic parameters of >the Bezier curves it consists of. > >What happened, is that the "arclength" 3.1415 you inserted above, is >bigger than the total arclength of 1.25 of the circle. Therefore, you >get a point that is extrapolated from the very last path element the >circle consists of (This is probably a short closing line) > >This is what you wanted: >x, y = circle.at(0.) >x1, y1 = circle.at(0.5*circle.arclen()) >because the standard parameterisation is in arclength. > > Thank you. Ok, now a few things are falling into place, in particular the discussion of parameters in http://pyx.sourceforge.net/manual/node7.html I understand things a little better now (still more to grok). Does every path have an arclength? Even a compound path? I suppose so, since the circle is a compound path. I think that my confusion was caused in part by the fact that the example at the end of http://pyx.sourceforge.net/manual/node7.html uses a unit circle, so the arclength equals the angle. > > >>c.stroke(path.path(path.moveto(0,0), path.lineto(x, y))) >>c.stroke(path.path(path.moveto(0,0), path.lineto(x1, y1))) >>c.stroke(circle) >> >>c.writeEPSfile("test") >> >> >> > >Best, > Michael. > > > ```
 Re: [PyX-user] What's wrong with this picture? From: Joerg Lehmann - 2006-02-26 19:15:10 ```Hello Gary, On 26.02.06, Gary wrote: > Does every path have an arclength? Even a compound path? I suppose so, > since the circle is a compound path. Yes, every path has an arclength. > I think that my confusion was caused in part by the fact that the > example at the end of > http://pyx.sourceforge.net/manual/node7.html > uses a unit circle, so the arclength equals the angle. Ok, I generalized the example a little bit to prevent future confusion Thanks for the feedback, Jörg ```