[R] HELP - four.nines.cartesian.probability.grid
Charles Annis, P.E.
charles.annis at statisticalengineering.com
Wed Jul 7 18:26:01 CEST 2010
My routine (below) works OK but misbehaves if the on-screen plot is made
wider using the mouse.
The problem is caused by using
par("usr")[1] - 0.07 * (par("usr")[2] - par("usr")[1])
to locate two items on the y-axis. The rest of the labeling is controlled
by the "line=0" parameter setting. Of course resizing changes the absolute
plot width, and I'd rather have things with respect to the line= setting.
(Try it: Cut and paste the code, then resize the screen plot to be wider.)
Is there another way to do what I'm trying to do?
I'm using R version 2.11.1 (2010-05-31), running on an HP 64 bit Windows 7
machine.
Thanks
############################################
four.nines.cartesian.probability.grid <-
function (X.data, x.title = "X", y.title = "Theoretical Normal CDF",
X.start, X.end)
{
probs <- c(0.0001, 0.0003, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1,
0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.98, 0.99, 0.995, 0.998,
0.999, 0.9997, 0.9999)
z.vals <- qnorm(probs)
y.min <- z.vals[1]
y.max <- z.vals[length(z.vals)]
npts <- length(X.data)
X.mean <- mean(X.data)
X.sd <- sd(X.data)
X.001 <<- X.mean + X.sd * qnorm(0.001)
X.999 <<- X.mean + X.sd * qnorm(0.999)
plot(NA, axes = FALSE, xlim = c(X.start, X.end), ylim = c(qnorm(0.0001),
qnorm(0.9999)), xlab = "", ylab = "")
axis(side = 1, labels = TRUE, at = pretty(c(X.001, X.data, X.999), n=8),
line = 0, tick = TRUE, outer = FALSE)
mtext(text = x.title, side = 1, line = 2.3, adj = 0.5)
axis(side = 2, at = z.vals, labels = c(NA, NA,
as.character(probs)[-(1:2)]),
line = 0, tck = -0.01, las = 1, cex.axis = 0.8)
x.loc <- par("usr")[1] - 0.07 * (par("usr")[2] - par("usr")[1]) ## If plot
is resized wider this may be troublesome.
text(x = x.loc, y = z.vals[1], bquote(1*" X "*10^-4), cex = 0.75, xpd =
TRUE)
text(x = x.loc, y = z.vals[2], bquote(3*" X "*10^-4), cex = 0.75, xpd =
TRUE)
abline(h = qnorm(c(0.90, 0.95, 0.99, 0.999, 0.9999)), lty = 5, col =
"gray")
abline(h = qnorm(c(0.10, 0.05, 0.01, 0.001, 0.0001)), lty = 5, col =
"gray")
mtext(text = y.title, side = 2, line = 3, at = (y.max + y.min)/2, adj =
0.5)
mtext("www.StatisticalEngineering.com", side = 1, line = 2.9, adj = 1,
cex = 0.7)
box()
}
############################################
windows(width = 6, height = 6, pointsize = 12)
par(mar = c(4, 4, 0.5, 1) + 0.1)
X.data <- rnorm(n=100, mean = 8000, sd = 300)
four.nines.cartesian.probability.grid(X.data, X.start = 7000, X.end = 9000)
points(x = sort(X.data), y = qnorm((((1:length(X.data)) -
0.5)/length(X.data))))
############################################
Charles Annis, P.E.
Charles.Annis at StatisticalEngineering.com
561-352-9699
http://www.StatisticalEngineering.com
More information about the R-help
mailing list