# sunflowerplot: Produce a Sunflower Scatter Plot

Description Usage Arguments Details Value Side Effects Author(s) References See Also Examples

### Description

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

### Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13``` ```sunflowerplot(x, ...) ## Default S3 method: 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, ...) ## S3 method for class 'formula' sunflowerplot(formula, data = NULL, xlab = NULL, ylab = NULL, ..., subset, na.action = NULL) ```

### 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 segments 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`], or to be passed to or from another method. `formula` a `formula`, such as `y ~ x`. `data` a data.frame (or list) from which the variables in `formula` should be taken. `subset` an optional vector specifying a subset of observations to be used in the fitting process. `na.action` a function which indicates what should happen when the data contain `NA`s. The default is to ignore case with missing values.

### Details

This is a generic function with default and formula methods.

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.

`density`, `xyTable`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24``` ```require(stats) # for rnorm 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) ## or sunflowerplot(Petal.Width ~ Petal.Length, data = iris, 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") ```