I'd like to plot n (say n = 10) semi-transparent lines in such a way that if
all n happen to exactly overlay each other, the resulting line is completely
opaque. In principle, I believe that this is what setting alpha = 1/n should
accomplish.
In practice, different values of n produce different results. Consider the
following function, which overlays n semi-transparent red lines:
mylines <- function(n) {
replicate(n, lines(0:1, rep(n, 2), col = rgb(1, 0, 0, alpha = 1/n)))
}
Opening up a device that supports translucency (such as pdf) and plotting the
resulting lines for n = 1, ..., 256:
pdf("alpha.pdf")
plot(0:1, c(1, 256), type = "n")
invisible(lapply(1:256, mylines))
dev.off()
Unfortunately, none of the lines for n > 1 look quite like the line for n =
1. The PDF looks quite different on screen depending on how much I zoom in, and
my (reasonably modern) printer just stops printing anything above about n = 170.
I see that there has been quite a bit of discussion on R-help about the
subtleties of semi-transparency, but I wonder if anyone can suggest a way that I
might achieve what I'm after? (The application I have in mind is multiple
imputation, plotting n imputations at alpha = 1/n to see where there is, or is
not, variability.)
Many thanks,
Daniel Farewell
Cardiff University
R version 2.9.1 (2009-06-26)
i386-apple-darwin8.11.1
locale:
en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] tools_2.9.1