Function to produce triangular (barycentric) plots illustrating proportions of 3 components, e.g. discrete 3D-distributions or mixture fractions that sum up to 1.
triplot(x = NULL, y = NULL, z = NULL, main = "", frame = TRUE,
label = 1:3, grid = seq(0.1, 0.9, by = 0.1), center = FALSE,
set.par = TRUE, ...)
Vector of fractions of first component
OR 3-column matrix containing all three components (omitting y
and z
)
OR 3-element vector (for all three components, omitting y
and z
).
(Optional) vector of fractions of second component.
(Optional) vector of fractions of third component.
Main title
Controls whether a frame (triangle) and labels are drawn.
(Character) vector of labels for the three corners.
Values along which grid lines are to be drawn (or FALSE
for no grid at all).
Default is steps of 10 percent.
Controls whether or not to draw centerlines at which there is a
‘tie’ between any two dimensions (see also centerlines
).
Controls whether graphical parameter mar
is set so
the plot fills the window (see par
).
Further graphical parameters passed to trilines
.
The barycentric plot illustrates the set of points (x,y,z) with x,y,z between 0 and 1 and x+y+z=1; that is, the triangle spanned by (1,0,0), (0,1,0) and (0,0,1) in 3-dimensional space. The three dimensions x, y and z correspond to lower left, upper and lower right corner of the plot. The greater the share of x in the proportion, the closer the point is to the lower left corner; Points on the opposite (upper right) side have a zero x-fraction. The grid lines show the points at which one dimension is held constant, horizontal lines for example contain points with a constant second dimension.
tripoints
, trilines
, triperplines
, trigrid
,
triframe
for points, lines and layout, tritrafo
for placing labels,
and quadplot
for the same in 4 dimensions.
# NOT RUN {
# illustrating probabilities:
triplot(label = c("1, 2 or 3", "4 or 5", "6"),
main = "die rolls: probabilities", pch = 17)
triperplines(1/2, 1/3, 1/6)
# expected...
triplot(1/2, 1/3, 1/6, label = c("1, 2 or 3", "4 or 5", "6"),
main = "die rolls: expected and observed frequencies", pch = 17)
# ... and observed frequencies.
dierolls <- matrix(sample(1:3, size = 50*20, prob = c(1/2, 1/3, 1/6),
replace = TRUE), ncol = 50)
frequencies <- t(apply(dierolls, 1,
function(x)(summary(factor(x, levels = 1:3)))) / 50)
tripoints(frequencies)
# LDA classification posterior:
data(iris)
require(MASS)
pred <- predict(lda(Species ~ ., data = iris),iris)
plotchar <- rep(1,150)
plotchar[pred$class != iris$Species] <- 19
triplot(pred$posterior, label = colnames(pred$posterior),
main = "LDA posterior assignments", center = TRUE,
pch = plotchar, col = rep(c("blue", "green3", "red"), rep(50, 3)),
grid = TRUE)
legend(x = -0.6, y = 0.7, col = c("blue", "green3", "red"),
pch = 15, legend = colnames(pred$posterior))
# }
Run the code above in your browser using DataLab