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
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 
y 
numeric vector of 
number 
integer vector of length 
log 
character indicating log coordinate scale, see

digits 
when 
xlab, ylab 
character label for x, or yaxis, respectively. 
xlim, ylim 

add 
logical; should the plot be added on a previous one ?
Default is 
rotate 
logical; if 
pch 
plotting character to be used for points
( 
cex 
numeric; character size expansion of center points
(s. 
cex.fact 
numeric shrinking factor to be used for the
center points when there are flower leaves,
i.e., 
col, bg 
colors for the plot symbols, passed to

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 
seg.lwd 
numeric; the line width for the leaves' segments. 
... 
further arguments to 
formula 
a 
data 
a data.frame (or list) from which the variables in

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 
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]
equiangular ‘rays’
emanate from it.
If rotate = TRUE
and number[i] >= 2
, a random direction
is chosen (instead of the yaxis) 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
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")
