Re: [R] latex, eps graphics and transparent colors

From: Ben Bolker <bbolker_at_gmail.com>
Date: Wed, 13 Apr 2011 19:57:16 +0000

Michael Friendly <friendly <at> yorku.ca> writes:

>
> I have a diagram to be included in latex, where all my figures are .eps
> graphics (so pdflatex is not an
> option) and I want to achieve something
> like the following: three concentric filled circles varying in lightness
> or saturation. It is easiest to do this using
> transparency, but in my test using the postscript driver, the
> transparent color fills do not appear. Is it
> correct that postscript() does not support transparency?
>
> circle <-function (radius = 1, segments=61) {
> angles <- (0:segments)*2*pi/segments
> radius * cbind( cos(angles), sin(angles))
> }
>
> plot(1:5, 1:5, type='n', xlim=c(-1,5), ylim=c(-1,5), xlab='', ylab='',
> asp=1, xaxt="n", yaxt="n")
>
> #clrs <- trans.colors("lightblue", alpha=c(.2, .4, .6)) ## from heplots
> package
> clrs <- c("#ADD8E633", "#ADD8E666", "#ADD8E699")
>
> c1 <- circle(3)
> polygon( c1, col=clrs[1], border="lightblue")
> polygon(.67*c1, col=clrs[2], border="lightblue")
> polygon(.33*c1, col=clrs[3], border="lightblue")
>
> arrows(-1, 0, 5, 0, angle=10, length=.2, lwd=2, col="darkgray")
> arrows( 0, -1, 0, 5, angle=10, length=.2, lwd=2, col="darkgray")
>
> One alternative that sort of works is to use the png() driver, and then
> convert fig.png fig.eps
> but I need very high resolution to make the real diagram legible.
>
> It might suffice to use hcl() colors to approximate what I've done with
> transparency,
> but I don't know how to start with a given color ("lightblue") and
> achieve roughly
> similar resuts.

>

  If you really only want to lighten a specified colour (rather than overlaying multiple colours), then something like this ought to do the trick:

testfun <- function(clrs=c("#ADD8E633", "#ADD8E666", "#ADD8E699")) {   plot(1:5, 1:5, type='n', xlim=c(-1,5), ylim=c(-1,5), xlab='', ylab='',

       asp=1, xaxt="n", yaxt="n")
  c1 <- circle(3)

  polygon(    c1, col=clrs[1], border="lightblue")
  polygon(.67*c1, col=clrs[2], border="lightblue")
  polygon(.33*c1, col=clrs[3], border="lightblue")

  arrows(-1, 0, 5, 0, angle=10, length=.2, lwd=2, col="darkgray")   arrows( 0, -1, 0, 5, angle=10, length=.2, lwd=2, col="darkgray") }

postscript("testalpha1.ps")
testfun()
dev.off()

lblue <- "#ADD8E6"
alphafy <- function(col,alpha=1) {
  rr <- 1-alpha*(1-c(col2rgb(col)/255))
  rgb(rr[1],rr[2],rr[3])
}
alphafy("#ADD8E6")
alphafy("#ADD8E6",alpha=0)

postscript("testalpha2.ps")
testfun(clrs=c(alphafy(lblue,0.2),alphafy(lblue,0.4),alphafy(lblue,0.6))) dev.off()



R-help_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Wed 13 Apr 2011 - 20:01:16 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 13 Apr 2011 - 21:00:29 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive