pdf() behavior (PR#1174)
Once again, this has nothing to do with pdf()!
The bug is in the internal clipping code in graphics.c, which read
default: /* Partial clipping; draw poly[line|gon] */
dd->gp.xpd = 2;
result2 = clipCircleCode(x, y, coords, ir, dd);
dd->gp.xpd = xpdsaved;
if (dd->dp.canClip && result2 == -2) {
GClip(dd);
dd->dp.circle(x, y, coords, ir, bg, fg, dd);
}
else {
vmax = vmaxget();
xc = (double*)R_alloc(result+1, sizeof(double));
yc = (double*)R_alloc(result+1, sizeof(double));
with result, not result2. This meant that if a circle was clipped by the
plot region but not by the device region, result got set to -2, and the
final lines tried to allocate a vector of size -1. As the postscript
device has dd->dp.canClip true, the bug was avoided on that device.
I don't fully understand the intended logic: is this fix the correct one,
Paul or Ross? And can we have some comments in the code, please?
On Thu, 15 Nov 2001 White.Denis@epamail.epa.gov wrote:
The attached script produces "Error in plot.xy ... negative length
vectors are not allowed" when using pdf() but not when using postscript
().
platform sparc-sun-solaris2.8
arch sparc
os solaris2.8
system sparc, solaris2.8
status
major 1
minor 3.1
year 2001
month 08
day 31
language R
------------------------------------
# script
PDF <- TRUE
f.v1 <- function (x, a, b) b * (x^a)
f.v2 <- function (x, a, b, d) b * (x^a) * exp(d*x)
dat <- scan ("test.dat")
if (PDF) pdf ("test.pdf", width=8.5, height=11) else
postscript ("test.eps", horizontal=FALSE, onefile=FALSE)
par (mfrow=c(2,1), mar=rep(6,4))
n <- length(dat)
nseq <- seq (n)
fit <- lm (log (dat[nseq]) ~ log (nseq))
b <- exp (fit$coefficients[1])
a <- fit$coefficients[2]
plot (dat[nseq], pch=20)
points (sapply (nseq, f.v1, a, b), col="red", pch=20)
fit <- lm (log (dat[nseq]) ~ log (nseq) + nseq)
b <- exp (fit$coefficients[1])
a <- fit$coefficients[2]
d <- fit$coefficients[3]
plot (dat[nseq], pch=20)
points (sapply (nseq, f.v2, a, b, d), col="red", pch=20)
graphics.off ()
-----------------------------------
# data set
9.585
12.935
14.775
15.625
16.56
17.44
18.165
18.655
19.04
19.49
19.9
20.285
20.61
20.815
21.065
21.3
21.46
21.645
21.82
22.085
22.315
22.45
22.61
22.67
22.79
22.9
23.01
23.1
23.165
23.295
23.4
23.51
23.585
23.64
23.685
23.75
23.805
23.84
23.9
23.955
24.025
24.09
24.14
24.18
24.23
24.275
24.31
24.33
24.345
24.37
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel 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-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel 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-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._