[R] Postscript Legends (or not)

Jim Lemon bitwrit at ozemail.com.au
Fri Jun 23 11:30:38 CEST 2000

Anon wrote:

...However, if I use Fred <- c(1,"33")...
Is this a bug, or am I missing something?

This is an interesting problem.  It boils down to the fact that
PostScript expects an array (even if it's empty) and an offset for
"setdash".  Normally, a solid line is specified with an empty array and
zero offset.  However, if R gets specs that convert to zero and puts a
zero in the array, the PostScript interpreter will barf.  Zero can
appear, but there must be at least one non-zero number in the array.
Hexadecimal strings supplied to lty are converted to array elements, but
a single character "1" seems to produce "0.00".  Remember that the c()
operater will coerce the number 1 to the string "1" when combining it
with "33".  That is, it's probably a bad idea to mix the two methods of
specifying line types with "lty".

A possible fix is to insert a test for zero in the function
SetLineStyle() - devPS.c:

static void SetLineStyle(int newlty, double newlwd, DevDesc *dd)
    PostScriptDesc *pd = (PostScriptDesc *) dd->deviceSpecific;
    int i, ltyarray[8];
    int sum = 0;
    if (pd->lty != newlty || pd->lwd != newlwd) {
      pd->lwd = newlwd;
      pd->lty = newlty;
      PostScriptSetLineWidth(pd->psfp, dd->gp.lwd*0.75);
      for(i = 0; i < 8 && newlty & 15 ; i++) {
          ltyarray[i] = newlty & 15;
          sum += ltyarray[i];
          newlty = newlty >> 4;
      if(!sum) i = 0;
      PostScriptSetLineTexture(pd->psfp, ltyarray, i, dd->gp.lwd *

producing a solid line when all elements of 'ltyarray' are zero.


r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list