# balloonplot: Plot a graphical matrix where each cell contains a dot whose... In gplots: Various R Programming Tools for Plotting Data

## Description

Plot a graphical matrix where each cell contains a dot whose size reflects the relative magnitude of the corresponding component.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32``` ```balloonplot(x, ...) ## S3 method for class 'table' balloonplot(x, xlab, ylab, zlab, show.zeros=FALSE,show.margins=TRUE,...) ## Default S3 method: balloonplot(x,y,z, xlab, ylab, zlab=deparse(substitute(z)), dotsize=2/max(strwidth(19),strheight(19)), dotchar=19, dotcolor="skyblue", text.size=1, text.color=par("fg"), main, label=TRUE, label.digits=2, label.size=1, label.color=par("fg"), scale.method=c("volume","diameter"), scale.range=c("absolute","relative"), colsrt=par("srt"), rowsrt=par("srt"), colmar=1, rowmar=2, show.zeros=FALSE, show.margins=TRUE, cum.margins=TRUE, sorted=TRUE, label.lines=TRUE, fun=function(x)sum(x,na.rm=T), hide.duplicates=TRUE, ... ) ```

## Arguments

 `x` A table object, or either a vector or a list of several categorical vectors containing grouping variables for the first (x) margin of the plotted matrix. `y` Vector or list of vectors for grouping variables for the second (y) dimension of the plotted matrix. `z` Vector of values for the size of the dots in the plotted matrix. `xlab` Text label for the x dimension. This will be displayed on the x axis and in the plot title. `ylab` Text label for the y dimension. This will be displayed on the y axis and in the plot title. `zlab` Text label for the dot size. This will be included in the plot title. `dotsize` Maximum dot size. You may need to adjust this value for different plot devices and layouts. `dotchar` Plotting symbol or character used for dots. See the help page for the points function for symbol codes. `dotcolor` Scalar or vector specifying the color(s) of the dots in the plot. `text.size, text.color` Character size and color for row and column headers `main` Plot title text. `label` Boolean flag indicating whether the actual value of the elements should be shown on the plot. `label.digits` Number of digits used in formatting value labels. `label.size, label.color` Character size and color for value labels. `scale.method` Method of scaling the sizes of the dot, either "volume" or "diameter". See below. `scale.range` Method for scaling original data to compute circle diameter. `scale.range="absolute"` scales the data relative to 0 (i.e, maps [0,max(z)] –> [0,1]), while `scale.range="relative"` scales the data relative to min(z) (i.e. maps [min(z), max(z)] –> [0,1]). `rowsrt, colsrt` Angle of rotation for row and column labels. `rowmar, colmar` Space allocated for row and column labels. Each unit is the width/height of one cell in the table. `show.zeros` boolean. If `FALSE`, entries containing zero will be left blank in the plotted matrix. If `TRUE`, zeros will be displayed. `show.margins` boolean. If `TRUE`, row and column sums are printed in the bottom and right margins, respectively. `cum.margins` boolean. If `TRUE`, marginal fractions are graphically presented in grey behind the row/column label area. `sorted` boolean. If `TRUE`, the rows will be arranged in sorted order by using the levels of the first y factor, then the second y factor, etc. The same process is used for the columns, based on the x factors `label.lines` boolean. If `TRUE`, borders will be drawn for row and column level headers. `hide.duplicates` boolean. If `TRUE`, column and row headers will omit duplicates within row/column to reduce clutter. Defaults to `TRUE`. `fun` function to be used to combine data elements with the same levels of the grouping variables `x` and `y`. Defaults to `sum` `...` Additional arguments passed to `balloonplot.default` or `plot`, as appropriate.

## Details

This function plots a visual matrix. In each `x`,`y` cell a dot is plotted which reflects the relative size of the corresponding value of `z`. When `scale.method="volume"` the volume of the dot is proportional to the relative size of `z`. When `scale.method="diameter"`, the diameter of the dot is proportional to the the relative size of `z`. The "volume" method is default because the "diameter" method visually exaggerates differences.

## Value

Nothing of interest.

## Note

`z` is expected to be non-negative. The function will still operate correctly if there are negative values of `z`, but the corresponding dots will have 0 size and a warning will be generated.

## Author(s)

Gregory R. Warnes [email protected]

## References

Function inspired by question posed on R-help by Ramon Alonso-Allende [email protected].

`plot.table`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53``` ```# Create an Example Data Frame Containing Car x Color data carnames <- c("bmw","renault","mercedes","seat") carcolors <- c("red","white","silver","green") datavals <- round(rnorm(16, mean=100, sd=60),1) data <- data.frame(Car=rep(carnames,4), Color=rep(carcolors, c(4,4,4,4) ), Value=datavals ) # show the data data # generate balloon plot with default scaling balloonplot( data\$Car, data\$Color, data\$Value) # show margin label rotation & space expansion, using some long labels levels(data\$Car) <- c("BMW: High End, German","Renault: Medium End, French", "Mercedes: High End, German", "Seat: Imaginary, Unknown Producer") # generate balloon plot with default scaling balloonplot( data\$Car, data\$Color, data\$Value, colmar=3, colsrt=90) # Create an example using table xnames <- sample( letters[1:3], 50, replace=2) ynames <- sample( 1:5, 50, replace=2) tab <- table(xnames, ynames) balloonplot(tab) # Example of multiple classification variabls using the Titanic data library(datasets) data(Titanic) dframe <- as.data.frame(Titanic) # convert to 1 entry per row format attach(dframe) balloonplot(x=Class, y=list(Survived, Age, Sex), z=Freq, sort=TRUE) # colorize: surviors lightblue, non-survivors: grey Colors <- Titanic Colors[,,,"Yes"] <- "skyblue" Colors[,,,"No"] <- "grey" colors <- as.character(as.data.frame(Colors)\$Freq) balloonplot(x=list(Age,Sex), y=list(Class=Class, Survived=gdata::reorder.factor(Survived,new.order=c(2,1)) ), z=Freq, zlab="Number of Passengers", sort=TRUE, dotcol = colors, show.zeros=TRUE, show.margins=TRUE) ```