From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>

Date: Wed, 09 May 2007 05:54:17 +0100 (BST)

Date: Wed, 09 May 2007 05:54:17 +0100 (BST)

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_at_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, ripley_at_stats.ox.ac.uk 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_at_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.Received on Wed 09 May 2007 - 05:01:33 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Wed 09 May 2007 - 06:31:54 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*