Cleveland's Dot Plots
Draw a Cleveland dot plot.
dotchart(x, labels = NULL, groups = NULL, gdata = NULL, cex = par("cex"), pch = 21, gpch = 21, bg = par("bg"), color = par("fg"), gcolor = par("fg"), lcolor = "gray", xlim = range(x[is.finite(x)]), main = NULL, xlab = NULL, ylab = NULL, ...)
- either a vector or matrix of numeric values (
NAs are allowed). If
xis a matrix the overall plot consists of juxtaposed dotplots for each row. Inputs which satisfy
is.vector(x) || is.matrix(x)are coerced by
as.numeric, with a warning.
- a vector of labels for each point.
For vectors the default is to use
names(x)and for matrices the row labels
- an optional factor indicating how the elements of
xare grouped. If
xis a matrix,
groupswill default to the columns of
- data values for the groups. This is typically a summary such as the median or mean of each group.
- the character size to be used. Setting
cexto a value smaller than one can be a useful way of avoiding label overlap. Unlike many other graphics functions, this sets the actual size, not a multiple of
- the plotting character or symbol to be used.
- the plotting character or symbol to be used for group values.
- the background color of plotting characters or symbols to be
par(bg= *)to set the background color of the whole plot.
- the color(s) to be used for points and labels.
- the single color to be used for group labels and values.
- the color(s) to be used for the horizontal lines.
- horizontal range for the plot, see
- overall title for the plot, see
- xlab, ylab
- axis annotations as in
- graphical parameters can also be specified as arguments.
This function is invoked for its side effect, which is to produce two
variants of dotplots as described in Cleveland (1985).Dot plots are a reasonable substitute for bar plots.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Cleveland, W. S. (1985) The Elements of Graphing Data. Monterey, CA: Wadsworth.
Murrell, P. (2005) R Graphics. Chapman & Hall/CRC Press.
dotchart(VADeaths, main = "Death Rates in Virginia - 1940") op <- par(xaxs = "i") # 0 -- 100% dotchart(t(VADeaths), xlim = c(0,100), main = "Death Rates in Virginia - 1940") par(op)
[Example file for LinkedIn Learning video](https://linkedin-learning.pxf.io/rweekly_dotchart) ```r # dotchart works with matrix or vector (not dataframe) # Dotplot for vectors ---- vectorToPlot <- c(1:6) names(vectorToPlot) <- c(LETTERS[1:6]) dotchart(vectorToPlot, cex = .7) myGroup <- factor(c("group1","group3","group2","group1","group3","group2")) dotchart(vectorToPlot, groups = myGroup) dotchart(vectorToPlot, gcolor = "red", groups = myGroup, gdata = c(median(vectorToPlot[myGroup == "group1"]), median(vectorToPlot[myGroup == "group2"]), median(vectorToPlot[myGroup == "group3"])), cex = .7, main = "Groups of Things", xlab = "Things") # dotplot for matrix ---- View(WorldPhones) str(WorldPhones) # worldphones is a matrix - not a dataframe # Major labels (Groups) are matrix columns. Minor labels are matrix rows dotchart(WorldPhones) # works, but it's messy dotchart(WorldPhones, gcolor = "Blue", cex = .5, gdata = colMeans(WorldPhones), gpch = 15, main = "World Phones by Country") ```