On Tue, 8 May 2007, Paulo Barata wrote: > > Prof. Ripley, > > Maybe the fact that few R plot regions have a 1:1 aspect ratio > is not a major problem here. One has to deal with the same > issue when drawing a circle parametrically. Depending on the > window size, a (cos(t),sin(t)) plot appears as an ellipse. > To get a circle parametrically, one has to resize the plot region, > or define it (possibly by trial and error) with functions like > windows() or win.graph() (package grDevices), to have a 1:1 aspect > ratio.
You miss the point: those graphics languages which support circular arcs do so in device space, not user space. > Maybe more important is to have some sure way to draw smooth arcs > and arrows. Could it be done even if the plot region does not have > a 1:1 aspect ratio, when the arc (intended to be an arc of a circle) > would show as an arc of an ellipse? Would the smooth ellipse arc > then turn into a smooth circle arc, when the plot region is resized? > > Paulo Barata > (Rio de Janeiro - Brazil) > > ----------------------------------------------------------------------- > > Prof Brian Ripley wrote: >> There is now an xspline() function in R-devel, with an example showing how >> to add arrows. >> >> I thought a bit more about a 'circular arc' function, but there really is a >> problem with that. Few R plot regions have a 1:1 aspect ratio including >> some that are intended to do so (see the rw-FAQ). symbols() is designed to >> draw circles in device coordinates, but attempting to specify circular arcs >> by endpoints in user coordinates is fraught. >> >> On Wed, 2 May 2007, Paul Murrell wrote: >> >>> Hi >>> >>> >>> Paulo Barata wrote: >>>> Dr. Murrell and all, >>>> >>>> One final suggestion: a future function arc() in package graphics, >>>> with centre-radius-angle parameterisation, could also include an >>>> option to draw arrows at either end of the arc, as one can find >>>> in function arrows(). >>> >>> >>> ... and in grid.xspline() and grid.curve(). >>> >>> Paul >>> >>> >>>> Thank you. >>>> >>>> Paulo Barata >>>> >>>> ----------------------------------------------------------------------- >>>> Paul Murrell wrote: >>>>> Hi >>>>> >>>>> >>>>> Paulo Barata wrote: >>>>>> Dr. Snow and Prof. Ripley, >>>>>> >>>>>> Dr. Snow's suggestion, using clipplot (package TeachingDemos), >>>>>> is maybe a partial solution to the problem of drawing an arc of >>>>>> a circle (as long as the line width of the arc is not that large, >>>>>> as pointed out by Prof. Ripley). If the arc is symmetrical around >>>>>> a vertical line, then it is not so difficult to draw it that way. >>>>>> But an arc that does not have this kind of symmetry would possibly >>>>>> require some geometrical computations to find the proper rectangle >>>>>> to be used for clipping. >>>>>> >>>>>> I would like to suggest that in a future version of R some function >>>>>> be included in the graphics package to draw smooth arcs with >>>>>> given center, radius, initial and final angles. I suppose >>>>>> that the basic ingredients are available in function "symbols" >>>>>> (graphics). >>>>> >>>>> Just to back up a few previous posts ... >>>>> >>>>> There is something like this facility already available via the >>>>> grid.xspline() function in the grid package. This provides very >>>>> flexible curve drawing (including curves very close to Bezier curves) >>>>> based on the X-Splines implemented in xfig. The grid.curve() function >>>>> provides a convenience layer that allows for at least certain >>>>> parameterisations of arcs (you specify the arc end points and the >>>>> angle). >>>>> >>>>> These functions are built on functionality within the core graphics >>>>> engine, so exposing a similar interface (e.g., an xspline() function) >>>>> within "traditional" graphics would be relatively straightforward. >>>>> >>>>> The core functionality draws the curves as line segments (but >>>>> automatically figures out how many segments to use so that the curve >>>>> looks smooth); it does NOT call curve-drawing primitives in the >>>>> graphics device (like PostScript's curveto). >>>>> >>>>> In summary: there is some support for smooth curves, but we could still >>>>> benefit from a specific arc() function with the standard >>>>> centre-radius-angle parameterisation and we could also benefit from >>>>> exposing the native strengths of different graphics devices (rather than >>>>> the current lowest-common-denominator approach). >>>>> >>>>> Paul >>>>> >>>>> >>>>>> Thank you very much. >>>>>> >>>>>> Paulo Barata >>>>>> (Rio de Janeiro - Brazil) >>>>>> >>>>>> ----------------------------------------------------------------------- >>>>>> Prof Brian Ripley wrote: >>>>>>> On Tue, 1 May 2007, Greg Snow wrote: >>>>>>> >>>>>>>> Here is an approach that clips the circle you like from symbols down >>>>>>>> to >>>>>>>> an arc (this will work as long as the arc is less than half a circle, >>>>>>>> for arcs greater than half a circle, you could draw the whole circle >>>>>>>> then use this to draw an arc of the bacground color over the section >>>>>>>> you >>>>>>>> don't want): >>>>>>>> >>>>>>>> library(TeachingDemos) >>>>>>>> plot(-5:5, -5:5, type='n') >>>>>>>> clipplot( symbols(0,0,circles=2, add=TRUE), c(0,5), c(0,5) ) >>>>>>> I had considered this approach: clipping a circle to a rectangle isn't >>>>>>> strictly an arc, as will be clear if the line width is large. >>>>>>> Consider >>>>>>> >>>>>>> clipplot(symbols(0, 0 ,circles=2, add=TRUE, lwd=5), c(-1,5), c(-1,5)) >>>>>>> >>>>>>> Note too that what happens with clipping is device-dependent. If R's >>>>>>> internal clipping is used, the part-circle is converted to a polygon. >>>>>>> >>>>>>> >>>>>> ______________________________________________ >>>>>> R-help@stat.math.ethz.ch mailing list >>>>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>>>> PLEASE do read the posting guide >>>>>> http://www.R-project.org/posting-guide.html >>>>>> and provide commented, minimal, self-contained, reproducible code. >>> >>> >> > -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.