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

Share:

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 greg@warnes.net

References

Function inspired by question posed on R-help by Ramon Alonso-Allende allende@cnb.uam.es.

See Also

plot.table

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