Learn R Programming

vcd (version 1.1-1)

ternaryplot: Ternary Diagram

Description

Visualizes compositional, 3-dimensional data in an equilateral triangle.

Usage

ternaryplot(x, scale = 1, dimnames = NULL,
  dimnames_position = c("corner","edge","none"),
  dimnames_color = "black", id = NULL, id_color = "black",
  coordinates = FALSE, grid = TRUE, grid_color = "gray",
  labels = c("inside", "outside", "none"),
  labels_color = "darkgray", border = "black", bg = "white",
  pch = 19, cex = 1, prop_size = FALSE, col = "red",
  main = "ternary plot", newpage = TRUE, pop = TRUE, ...)

Arguments

x
a matrix with three columns.
scale
row sums scale to be used.
dimnames
dimension labels (defaults to the column names of x).
dimnames_position, dimnames_color
position and color of dimension labels.
id
optional labels to be plotted below the plot symbols. coordinates and id are mutual exclusive.
id_color
color of these labels.
coordinates
if TRUE, the coordinates of the points are plotted below them. coordinates and id are mutual exclusive.
grid
if TRUE, a grid is plotted. May optionally be a string indicating the line type (default: "dotted").
grid_color
grid color.
labels, labels_color
position and color of the grid labels.
border
color of the triangle border.
bg
triangle background.
pch
plotting character. Defaults to filled dots.
cex
a numerical value giving the amount by which plotting text and symbols should be scaled relative to the default. Ignored for the symbol size if prop_size is not FALSE.
prop_size
if TRUE, the symbol size is plotted proportional to the row sum of the three variables, i.e., represents the weight of the observation.
col
plotting color.
main
main title.
newpage
if TRUE, the plot will appear on a new graphics page.
pop
logical; if TRUE, all newly generated viewports are popped after plotting.
...
additional graphics parameters (see par)

Details

A points' coordinates are found by computing the gravity center of mass points using the data entries as weights. Thus, the coordinates of a point $P(a,b,c)$, $a + b + c = 1$, are: $P(b + c/2, c \sqrt{3}/2)$.

References

M. Friendly (2000), Visualizing Categorical Data. SAS Institute, Cary, NC.

Examples

Run this code
data("Arthritis")

## Build table by crossing Treatment and Sex
tab <- as.table(xtabs(~ I(Sex:Treatment) + Improved, data = Arthritis))

## Mark groups
col <- c("red", "red", "blue", "blue")
pch <- c(1, 19, 1, 19)

## plot
ternaryplot(
            tab,
            col = col,
            pch = pch,
            prop_size = TRUE,
            bg = "lightgray",
            grid_color = "white",
            labels_color = "white",
            main = "Arthritis Treatment Data"
           )
## legend
grid_legend(0.8, 0.7, pch, col, rownames(tab), title = "GROUP")

## Titanic
data("Lifeboats")
attach(Lifeboats)
ternaryplot(
  Lifeboats[,4:6],
  pch = ifelse(side == "Port", 1, 19),
  col = ifelse(side == "Port", "red", "blue"),
  id  = ifelse(men / total > 0.1, as.character(boat), NA),
  prop_size = 2,
  dimnames_position = "edge",
  main = "Lifeboats on Titanic"
)
grid_legend(0.8, 0.9, c(1, 19),
  c("red", "blue"), c("Port", "Starboard"),
  title = "SIDE")


## Hitters
data("Hitters")
attach(Hitters)
colors <- c("black","red","green","blue","red","black","blue")
pch <- substr(levels(Positions), 1, 1)
ternaryplot(
  Hitters[,2:4],
  pch = as.character(Positions),
  col = colors[as.numeric(Positions)],
  main = "Baseball Hitters Data"
)
grid_legend(0.8, 0.9, pch, colors, levels(Positions),
  title = "POSITION(S)")

Run the code above in your browser using DataLab