Learn R Programming

vcd (version 1.4-13)

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", dimnames_rot = c(-60, 60, 0),
  id = NULL, id_color = "black",
  id_just = c("center", "center"),
  coordinates = FALSE, grid = TRUE, grid_color = "gray",
  labels = c("inside", "outside", "none"),
  labels_color = "darkgray", labels_rot = c(120, -120, 0),
  border = "black", bg = "white",
  pch = 19, cex = 1, prop_size = FALSE, col = "red",
  main = "ternary plot", newpage = TRUE, pop = TRUE,
  return_grob = FALSE, ...)

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.

dimnames_rot

Numeric vector of length 3, specifying the angle of the dimension labels.

id

optional labels to be plotted below the plot symbols. coordinates and id are mutual exclusive.

id_color

color of these labels.

id_just

character vector of length 1 or 2 indicating the justification 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.

labels_rot

Numeric vector of length 3, specifying the angle 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.

return_grob

logical. Should a snapshot of the display be returned as a grid grob?

...

additional graphics parameters (see par)

Author

David Meyer David.Meyer@R-project.org

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