[R] ternary diagrams with contours
Petr Pikal
petr.pikal at precheza.cz
Mon Jan 19 08:14:25 CET 2004
Hi
with
help.search("ternary")
I have got
"ternaryplot" in package "vcd"
and below is some code for ternary diagram which was in help
post several years ago. I do not know if and how it works, I have
not tried it a long time.
#----------------------------------------------------------------------------
-----
# funkce pro kresleni ternarniho diagramu
# Colin Farrow
# Computing Service, University of Glasgow, Glasgow G12 8QQ
# c.farrow at compserv.gla.ac.uk
tri<-
function(a, f, m, symb = 2, grid = F, ...)
{
ta <- paste(substitute(a))
tf <- paste(substitute(f))
tm <- paste(substitute(m))
tot <- 100/(a + f +m)
b <- f * tot
y <- b * .878
x <- m * tot + b/2
par(pty = "s")
oldcol <- par("col")
plot(x, y, axes = F, xlab = "", ylab = "", xlim = c(-10, 110), ylim
= c(-10, 110), type = "n", ...)
points(x,y,pch=symb)
par(col = oldcol)
trigrid(grid)
text(-5, -5, ta)
text(105, -5, tm)
text(50, 93, tf)
par(pty = "m")
invisible()
}
"trigrid"<-
function(grid = F)
{
lines(c(0, 50, 100, 0), c(0, 87.8, 0, 0)) #draw frame
if(!grid) {
for(i in 1:4 * 20) {
lines(c(i, i - 1), c(0, 2 * .878)) #side a-c (base)
lines(c(i, i + 1), c(0, 2 * .878))
T.j <- i/2 #side a-b (left)
lines(c(T.j, T.j + 2), c(i * .878, i * .878))
lines(c(T.j, T.j + 1), c(i * .878, (i - 2) * .878))
T.j <- 100 - i/2 #side b-c (right)
lines(c(T.j, T.j - 2), c(i * .878, i * .878))
lines(c(T.j, T.j - 1), c(i * .878, (i - 2) * .878))
}
}
else {
for(i in 1:4 * 20) {
# draw dotted grid
lines(c(i, i/2), c(0, i * .878), lty = 4, col = 3) #
lines(c(i, (50 + i/2)), c(0, .878 * (100 - i)), lty = 4,
col = 3) # /
lines(c(i/2, (100 - i/2)), c(i * .878, i * .878), lty
= 4, col = 3) # -
}
par(lty = 1, col = 1)
}
}
Petr Pikal
petr.pikal at precheza.cz
More information about the R-help
mailing list