PlotBubble {DescTools}R Documentation

Draw a Bubble Plot


Draw a bubble plot, defined by a pair of coordinates x, y to place the bubbles, an area definition configuring the dimension and a color vector setting the color of the bubbles. The legitimation to define a new function instead of just using plot(symbols(...)) is the automated calculation of the axis limits, ensuring that all bubbles will be fully visible.


PlotBubble(x, ...)

## Default S3 method:
PlotBubble(x, y, area, col = NA, cex = 1, border = par("fg"),
           xlim = NULL, ylim = NULL, na.rm = FALSE, ...)

## S3 method for class 'formula'
PlotBubble(formula, data = parent.frame(), ..., subset, ylab = varnames[response])


x, y

the x and y co-ordinates for the centres of the bubbles. They can be specified in any way which is accepted by xy.coords.


a vector giving the area of the bubbles.


colors for the bubbles, passed to symbol. The default NA (or also NULL) means do not fill, i.e., draw transparent bubbles.


extension factor for the area.


the border color fot the bubbles. The default means par("fg"). Use border = NA to omit borders.

xlim, ylim

axes limits.


logical, should NAs be omitted? Defaults to FALSE.


a formula of the form lhs ~ rhs where lhs gives the data values and rhs the corresponding groups.


an optional matrix or data frame (or similar: see model.frame) containing the variables in the formula formula. By default the variables are taken from environment(formula).


an optional vector specifying a subset of observations to be used.


the y-label for the plot used in the formula interface.


the dots are passed to the plot function.


Argument inches controls the sizes of the symbols. If TRUE (the default), the symbols are scaled so that the largest dimension of any symbol is one inch. If a positive number is given the symbols are scaled to make largest dimension this size in inches (so TRUE and 1 are equivalent). If inches is FALSE, the units are taken to be those of the appropriate axes. This behaviour is the same as in symbols.


A legend can be added with BubbleLegend.


Andri Signorell <>

See Also

BubbleLegend, symbols, sunflowerplot


PlotBubble(latitude ~ longitude, area=(smoky+1)*2e8,
           col=SetAlpha(1, 0.5), data=d.whisky)

cols <- c("olivedrab1","orange","green","mediumturquoise","mediumorchid2","firebrick1")
PlotBubble(x = state.x77[,"Income"], y = state.x77[,"Life Exp"], cex=.00004,
           area = state.x77[,"Population"], col = cols[state.region], border="grey50",
           panel.first=grid(), xlab="Income", ylab="Life Exp.", las=1

BubbleLegend(x = "topright", area = c(20000, 10000, 1000), cex=.00004, frame=NA,
             cols=cols[1:3], labels = c(20000, 10000, 1000), cex.names=0.7)

legend(x="bottomright", fill=cols[1:4], legend=levels(state.region))

[Package DescTools version 0.99.51 Index]