# sunflowerplot

##### Produce a Sunflower Scatter Plot

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

- Keywords
- hplot, smooth, nonparametric

##### Usage

`sunflowerplot(x, …)`# S3 method for default
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 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

**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`

], 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 coordinates

y coordinates

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.

##### 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

##### Examples

`library(graphics)`

```
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")
```

*Documentation reproduced from package graphics, version 3.4.0, License: Part of R 3.4.0*