R: Draw a Circle

DrawCircle {DescTools} | R Documentation

## Draw a Circle

### Description

Draw one or several circle on an existing plot.

### Usage

    DrawCircle(x = 0, y = x, r.out = 1, r.in = 0,
               theta.1 = 0, theta.2 = 2*pi, border = par("fg"),
               col = NA, lty = par("lty"), lwd = par("lwd"),
               nv = 100, plot = TRUE)

### Arguments

`x, y` | a vector (or scalar) of xy-coordinates for the center(s) of the circle(s).
`r.out` | a vector (or scalar) of the outer radius of the circle.
`r.in` | a vector (or scalar) of a potential inner radius of an annulus.
`theta.1` | a vector (or scalar) of the starting angle(s). The sectors are built counterclockwise.
`theta.2` | a vector (or scalar) of the ending angle(s).
`nv` | number of vertices to draw the circle.
`border` | color for circle borders. The default is par("fg"). Use border = `NA` to omit borders.
`col` | color(s) to fill or shade the circle(s) with. The default `NA` (or also NULL) means do not fill, i.e., draw transparent circles, unless density is specified.
`lty` | line type for borders and shading; defaults to `"solid"`.
`lwd` | line width for borders and shading.
`plot` | logical. If `TRUE` the structure will be plotted. If `FALSE` only the points are calculated and returned. Use this option if you want to combine several geometric structures to a polygon.

### Details

All geometric arguments will be recycled.

### Value

The function invisibly returns a list of the calculated coordinates for all shapes.

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

`polygon`, `DrawRegPolygon`, `DrawEllipse`, `DrawArc`

### Examples

    Canvas(xlim = c(-5,5), xpd=TRUE)
    cols <- Pal("Helsana")[1:4]

    # Draw ring
    DrawCircle (r.in = 1, r.out = 5, border="darkgrey", col=SetAlpha(hyellow, 0.2), lwd=2)

    # Draw circle
    DrawCircle (r.in = 6, border=hgreen, lwd=3)

    # Draw sectors
    geom <- rbind(c(-pi, 0, .25, .5), c(0, pi, 1, 2),
                  c(-pi/2, pi/2, 2, 2.5), c(pi/2, 3 * pi/2, 3, 4),
                  c(pi - pi/8, pi + pi/8, 1.5, 2.5))

    DrawCircle (r.in = geom[,3], r.out = geom[,4],
               theta.1 = geom[,1], theta.2 = geom[,2],
               col = SetAlpha(cols, 0.6),
               border = cols, lwd=1)

    # clipping
    Canvas(bg="lightgrey", main="Yin ~ Yang")
    DrawCircle (r.out = 1, col="white")
    clip(0, 2, 2, -2)
    DrawCircle(col="black")
    clip(-2, 2, 2, -2)
    DrawCircle (y = c(-0.5,0.5), r.out = 0.5, col=c("black", "white"), border=NA)
    DrawCircle (y = c(-0.5,0.5), r.out = 0.1, col=c("white", "black"), border=NA)
    DrawCircle ()

    # overplotting circles
    Canvas(xlim=c(-5,5))
    DrawCircle (r.out=4:1, col=c("white", "steelblue2", "white", "red"), lwd=3, nv=300)

    # rotation
    x <- seq(-3, 3, length.out=10)
    y <- rep(0, length.out=length(x))

    Canvas(xlim=c(-5,5), bg="black")

    sapply( (0:11) * pi/6, function(theta) {
      xy <- Rotate(x, y=y, theta=theta)
      DrawCircle (x=xy$x, y=xy$y, r.in=2.4, border=SetAlpha("white", 0.2))
    } )

[Package DescTools version 0.99.26 Index]