sunflowerplot            package:graphics            R Documentation

Produce a Sunflower Scatter Plot

Description:

     Multiple points are plotted as 'sunflowers' with multiple leaves
     ('petals') such that overplotting is visualized instead of
     accidental and invisible.

Usage:

     sunflowerplot(x, y = NULL, number, log = "", digits = 6,
                   xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL,
                   add = FALSE, rotate = FALSE,
                   pch = 16, cex = 0.8, cex.fact = 1.5,
                   col = par("col"), bg = NA, size = 1/8, seg.col = 2,
                   seg.lwd = 1.5, ...)

Arguments:

       x: numeric vector of 'x'-coordinates of length 'n', say, or
          another valid plotting structure, as for 'plot.default', see
          also 'xy.coords'.

       y: numeric vector of 'y'-coordinates of length 'n'.

  number: integer vector of length 'n'. 'number[i]' = number of
          replicates for '(x[i],y[i])', may be 0.
           Default ('missing(number)'): compute the exact multiplicity
          of the points 'x[],y[]', via 'xyTable()'.

     log: character indicating log coordinate scale, see
          'plot.default'.

  digits: when 'number' is computed (i.e., not specified), 'x' and 'y'
          are rounded to 'digits' significant digits before
          multiplicities are computed.

xlab,ylab: character label for x-, or y-axis, respectively.

xlim,ylim: 'numeric(2)' limiting the extents of the x-, or y-axis.

     add: logical; should the plot be added on a previous one ? Default
          is 'FALSE'.

  rotate: logical; if 'TRUE', randomly rotate the sunflowers
          (preventing artefacts).

     pch: plotting character to be used for points ('number[i]==1') and
          center of sunflowers.

     cex: numeric; character size expansion of center points (s.
          'pch').

cex.fact: numeric _shrinking_ factor to be used for the center points
          _when there are flower leaves_, i.e., 'cex / cex.fact' is
          used for these.

 col, bg: colors for the plot symbols, passed to 'plot.default'.

    size: of sunflower leaves in inches, 1[in] := 2.54[cm]. Default:
          1/8\", approximately 3.2mm.

 seg.col: color to be used for the *seg*ments which make the sunflowers
          leaves, see 'par(col=)'; 'col = "gold"' reminds of real
          sunflowers.

 seg.lwd: numeric; the line width for the leaves' segments.

     ...: further arguments to 'plot' [if 'add=FALSE'].

Details:

     For 'number[i]==1', a (slightly enlarged) usual plotting symbol
     ('pch') is drawn. For 'number[i] > 1', a small plotting symbol is
     drawn and 'number[i]' equi-angular 'rays' emanate from it.

     If 'rotate=TRUE' and 'number[i] >= 2', a random direction is
     chosen (instead of the y-axis) for the first ray.  The goal is to
     'jitter' the orientations of the sunflowers in order to prevent
     artefactual visual impressions.

Value:

     A list with three components of same length, 

       x: x coordinates

       y: y coordinates

  number: number


     Use 'xyTable()' (from package 'grDevices') if you are only
     interested in this return value.

Side Effects:

     A scatter plot is drawn with 'sunflowers' as symbols.

Author(s):

     Andreas Ruckstuhl, Werner Stahel, Martin Maechler, Tim Hesterberg,
     1989-1993.  Port to R by Martin Maechler
     maechler@stat.math.ethz.ch.

References:

     Chambers, J. M., Cleveland, W. S., Kleiner, B. and Tukey, P. A.
     (1983) _Graphical Methods for Data Analysis._  Wadsworth.

     Schilling, M. F. and Watkins, A. E. (1994) A suggestion for
     sunflower plots. _The American Statistician_, *48*, 303-305.

     Murrell, P. (2005) _R Graphics_. Chapman & Hall/CRC Press.

See Also:

     'density', 'xyTable'

Examples:

     require(stats)
     require(grDevices)

     ## 'number' is computed automatically:
     sunflowerplot(iris[, 3:4])
     ## Imitating  Chambers et al., p.109, closely:
     sunflowerplot(iris[, 3:4], cex=.2, cex.fact=1, size=.035, seg.lwd=.8)

     sunflowerplot(x=sort(2*round(rnorm(100))), y= round(rnorm(100),0),
                   main = "Sunflower Plot of Rounded N(0,1)")
     ## Similarly using a "xyTable" argument:
     xyT <- xyTable(x=sort(2*round(rnorm(100))), y= round(rnorm(100),0),
                    digits=3)
     utils::str(xyT, vec.len=20)
     sunflowerplot(xyT, main = "2nd Sunflower Plot of Rounded N(0,1)")

     ## A 'marked point process' {explicit 'number' argument}:
     sunflowerplot(rnorm(100), rnorm(100), number = rpois(n=100,lambda=2),
                   main="Sunflower plot (marked point process)",
                   rotate=TRUE, col = "blue4")

