Spatial Point Patterns: Methodology and Applications with R
by Adrian Baddeley, Ege Rubak and Rolf Turner


R code for chapter 11

Below is the R code used to generate results and figures in chapter 11. The code is in a rather raw format extracted from the book manuscript files – please read the instructions for use if you haven’t done so yet. You can download the script here.

### R code from vignette source '11validate.Rnw'
## Copyright (C) Adrian Baddeley, Ege Rubak and Rolf Turner

###################################################
### code chunk number 1: 11validate.Rnw:9-15
###################################################
source("R/startup.R")
Digits <- 4
dopt <- options(digits=Digits)
Terse <- 3
spatstat.options(terse=Terse)
requireversion(spatstat, "1.41-1.073")


###################################################
### code chunk number 2: 11validate.Rnw:263-264
###################################################
fit2e <- ppm(bei ~ polynom(elev,2), data=bei.extra)


###################################################
### code chunk number 3: 11validate.Rnw:300-302
###################################################
lam0 <- fitted(fit2e, dataonly=TRUE)
rel2e <- density(bei, weights=1/lam0)


###################################################
### code chunk number 4: BeiR.Rnw:3-5
###################################################
newplot(13,0.95)
setmargins(0,0,0,1)


###################################################
### code chunk number 5: 11validate.Rnw:309-312
###################################################
coco <- if(monochrome) grey(seq(0,1,length=128)) else NULL
plot(rel2e, main="", col=coco, log=TRUE, ribargs=list(las=1))
contour(rel2e, add=TRUE, drawlabels=FALSE)


###################################################
### code chunk number 6: 11validate.Rnw:328-330 (eval = FALSE)
###################################################
## lam0 <- fitted(fit2e, dataonly=TRUE)
## rel2e <- density(bei, weights=1/lam0)


###################################################
### code chunk number 7: 11validate.Rnw:334-335
###################################################
range(rel2e)


###################################################
### code chunk number 8: 11validate.Rnw:372-375
###################################################
lambda0 <- predict(fit2e)
grad <- bei.extra$grad
rh1 <- rhohat(bei, grad, baseline=lambda0)


###################################################
### code chunk number 9: 11validate.Rnw:380-381
###################################################
rh2 <- rhohat(fit2e, grad)


###################################################
### code chunk number 10: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 11: 11validate.Rnw:394-396
###################################################
plot(rh1, main="", legend=FALSE)
abline(1,0,lty=2)


###################################################
### code chunk number 12: 11validate.Rnw:526-527
###################################################
spatstat.options(terse=2)


###################################################
### code chunk number 13: 11validate.Rnw:532-534
###################################################
res2e <- residuals(fit2e)
res2e


###################################################
### code chunk number 14: 11validate.Rnw:536-537
###################################################
spatstat.options(terse=Terse)


###################################################
### code chunk number 15: BeiR.Rnw:3-5
###################################################
newplot(13,0.95)
setmargins(0,0,0,1)


###################################################
### code chunk number 16: 11validate.Rnw:566-568
###################################################
plot(res2e, col=lighttodark, main="", legend=FALSE, pch=".",cex=2, 
     ribscale=1000)


###################################################
### code chunk number 17: 11validate.Rnw:591-592
###################################################
integral(res2e, square(200))


###################################################
### code chunk number 18: 11validate.Rnw:598-600
###################################################
qua <- quadrats(bei, 4, 2)
resQ <- integral(res2e, qua)


###################################################
### code chunk number 19: 11validate.Rnw:604-605 (eval = FALSE)
###################################################
## plot(qua, do.labels=TRUE, labels=signif(resQ, 2))


###################################################
### code chunk number 20: Bei.Rnw:3-5
###################################################
newplot(12,0.8)
setmargins(0)


###################################################
### code chunk number 21: 11validate.Rnw:613-614
###################################################
plot(qua, do.labels=TRUE, labels=signif(resQ, 2), main="")


###################################################
### code chunk number 22: 11validate.Rnw:630-631
###################################################
smo2e <- Smooth(res2e)


###################################################
### code chunk number 23: BeiR.Rnw:3-5
###################################################
newplot(13,0.95)
setmargins(0,0,0,1)


###################################################
### code chunk number 24: 11validate.Rnw:638-640
###################################################
plot(smo2e, main="", col=darktolight, ribscale=1000)
contour(smo2e, add=TRUE, drawlabels=FALSE, col="white")


###################################################
### code chunk number 25: 11validate.Rnw:736-737 (eval = FALSE)
###################################################
## lurking(fit2e, grad, type="raw")


###################################################
### code chunk number 26: 11validate.Rnw:739-743
###################################################
set.seed(42)
lurkA <- lurking(fit2e, grad, type="raw", plot.it=FALSE)
lurkB <- lurking(fit2e, grad, type="raw", plot.it=FALSE,
                 cumulative=FALSE, envelope=TRUE)


###################################################
### code chunk number 27: lurk2.Rnw:3-5
###################################################
newplot(9, 1)
setmargins(4,5,1,1)


###################################################
### code chunk number 28: 11validate.Rnw:748-751
###################################################
par(mfrow=c(1,2), cex=0.75)
plot(lurkA)
plot(lurkB)


###################################################
### code chunk number 29: 11validate.Rnw:785-786 (eval = FALSE)
###################################################
## lurking(fit2e, grad, type="raw", cumulative=FALSE, envelope=TRUE)


###################################################
### code chunk number 30: Diagnosebei.Rnw:3-5
###################################################
newplot(9,1)
setmargins(1.5)


###################################################
### code chunk number 31: 11validate.Rnw:823-824
###################################################
setmargins(0.2)


###################################################
### code chunk number 32: 11validate.Rnw:828-830
###################################################
diagnose.ppm(fit2e, pch=".", cex=1.5,
             plot.neg="contour", legend=FALSE)


###################################################
### code chunk number 33: 11validate.Rnw:926-927
###################################################
set.seed(19310605)


###################################################
### code chunk number 34: 11validate.Rnw:929-933
###################################################
Pat <- rpoispp(function(x,y){50 * exp(2*x)})
fitpat <- ppm(Pat ~ x)
resI <- residuals(fitpat, type="inverse")
resP <- residuals(fitpat, type="Pearson")


###################################################
### code chunk number 35: Unit3R.Rnw:3-5
###################################################
newplot(22,0.9)
setmargins(0,0,0,1)


###################################################
### code chunk number 36: 11validate.Rnw:947-948
###################################################
setmargins(0,0,0,1)


###################################################
### code chunk number 37: 11validate.Rnw:952-961
###################################################
pa <- function(i) {
  switch(i, 
         list(),
         list(col=grey(0.8), lwd=2),
         list(lwd=2))
}
plot(solist(Pat, resI, resP),
     main="", main.panel="", nrows=1, 
     panel.args=pa, equal.scales=TRUE, mar.panel=0, hsep=2)


###################################################
### code chunk number 38: 11validate.Rnw:1026-1029
###################################################
B <- owin(c(0.1, 0.3), c(0.4, 0.6))
integral(resI, B)
integral(resP, B)


###################################################
### code chunk number 39: 11validate.Rnw:1033-1035
###################################################
integral(resI)
integral(resP)


###################################################
### code chunk number 40: 11validate.Rnw:1088-1089
###################################################
pres2e <- residuals(fit2e, type="pearson")


###################################################
### code chunk number 41: 11validate.Rnw:1097-1101
###################################################
psmo2e <- Smooth(pres2e)
psm <- layered(psmo2e, psmo2e)
layerplotargs(psm) <- list(list(col=darktolight, ribargs=list(las=1)),
                           list(.plot="contour", col="white", drawlabels=FALSE))


###################################################
### code chunk number 42: Bei2stackLR.Rnw:3-5
###################################################
newplot(12,0.8)
setmargins(0.2)


###################################################
### code chunk number 43: 11validate.Rnw:1107-1115
###################################################
pane <- function(i) {
  if(i > 1) list() else list(how="contour", drawlabels=FALSE, 
                             maxsize=40)
}
plot(solist(pres2e, psm), 
     ncols=1, halign=TRUE,
     main="", main.panel="", equal.scales=TRUE,
     panel.args=pane, mar.panel=0.2, pch=3)


###################################################
### code chunk number 44: 11validate.Rnw:1138-1139
###################################################
ss <- 1/(2 * sqrt(pi) * attr(psmo2e, "sigma"))


###################################################
### code chunk number 45: 11validate.Rnw:1141-1142 (eval = FALSE)
###################################################
## psmo2e <- Smooth(pres2e)


###################################################
### code chunk number 46: 11validate.Rnw:1144-1145
###################################################
1/(2 * sqrt(pi) * attr(psmo2e, "sigma"))


###################################################
### code chunk number 47: 11validate.Rnw:1158-1163
###################################################
beikm <- rescale(bei, s=1000, unitname="km")
beikm.extra <- lapply(bei.extra, rescale, 
                      s=1000, unitname="km")
fit2eKM <- ppm(beikm ~ polynom(elev, 2), data=beikm.extra)
pres2eKM <- residuals(fit2eKM, type="Pearson")


###################################################
### code chunk number 48: 11validate.Rnw:1200-1201
###################################################
resS <- residuals(fitpat, type="score")


###################################################
### code chunk number 49: Unit2LRboth.Rnw:4-6
###################################################
newplot(13, 1)
setmargins(0,2,0,2)


###################################################
### code chunk number 50: 11validate.Rnw:1204-1205
###################################################
setmargins(0)


###################################################
### code chunk number 51: 11validate.Rnw:1209-1211
###################################################
plot(resS, main="", mar.panel=c(0,0,0,1), hsep=1.5,
     ribargs=list(las=1))


###################################################
### code chunk number 52: 11validate.Rnw:1240-1244
###################################################
fit1g <- ppm(bei ~grad, data=bei.extra)
par1g <- parres(fit1g, "grad")
fit2g <- update(fit1g, ~polynom(grad,2))
par2g <- parres(fit2g, "grad")


###################################################
### code chunk number 53: 11validate.Rnw:1252-1253 (eval = FALSE)
###################################################
## fit1g <- ppm(bei ~ grad, data=bei.extra)


###################################################
### code chunk number 54: 11validate.Rnw:1270-1272 (eval = FALSE)
###################################################
## par1g <- parres(fit1g, "grad")
## plot(par1g, xlim=c(0,0.25))


###################################################
### code chunk number 55: fv2.Rnw:3-5
###################################################
newplot(12, 0.95)
setmargins(0.5+c(3,3,0,1))


###################################################
### code chunk number 56: 11validate.Rnw:1286-1289
###################################################
plot(anylist(par1g, par2g),
     main="", main.panel="",
     legend=FALSE, xlim=c(0, 0.25), lwd=2)


###################################################
### code chunk number 57: 11validate.Rnw:1304-1305 (eval = FALSE)
###################################################
## fit2g <- update(fit1g, ~polynom(grad,2))


###################################################
### code chunk number 58: 11validate.Rnw:1312-1313
###################################################
anova(fit2g, test="LRT")


###################################################
### code chunk number 59: 11validate.Rnw:1554-1556
###################################################
elev <- bei.extra$elev
addEfit2g <- addvar(fit2g, elev)


###################################################
### code chunk number 60: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 61: addvar
###################################################
plot(addEfit2g, main="", legend=FALSE, lwd=2)


###################################################
### code chunk number 62: 11validate.Rnw:1734-1736
###################################################
fitPois <- ppm(cells ~1, forcefit=TRUE)
diaPois <- diagnose.ppm(fitPois, plot.it=FALSE)


###################################################
### code chunk number 63: Diagnose.Rnw:3-5
###################################################
newplot(10, 0.8)
setmargins(1.5)


###################################################
### code chunk number 64: 11validate.Rnw:1739-1740
###################################################
setmargins(0.1)


###################################################
### code chunk number 65: 11validate.Rnw:1744-1745
###################################################
plot(diaPois, col.neg=grey(0.65), cols="white")


###################################################
### code chunk number 66: 11validate.Rnw:1801-1802
###################################################
qqp <- qqplot.ppm(fitPois,plot.it=FALSE,nsim=39)


###################################################
### code chunk number 67: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 68: 11validate.Rnw:1805-1806
###################################################
setmargins(0.5+c(4,3,0,0))


###################################################
### code chunk number 69: 11validate.Rnw:1810-1811
###################################################
plot(qqp, main="", monochrome=monochrome)


###################################################
### code chunk number 70: 11validate.Rnw:1923-1925
###################################################
cellKr <- Kres(cells, correction="best")
cellGr <- Gres(cells, correction="best")


###################################################
### code chunk number 71: 11validate.Rnw:1937-1940
###################################################
## set 'shade variables' for plots
fvnames(cellKr, ".s") <- c("ihi", "ilo")
fvnames(cellGr, ".s") <- c("hi", "lo")


###################################################
### code chunk number 72: fv2.Rnw:3-5
###################################################
newplot(12, 0.95)
setmargins(0.5+c(3,3,0,1))


###################################################
### code chunk number 73: 11validate.Rnw:1946-1949
###################################################
plot(anylist(cellKr,cellGr), main="", main.panel="", 
     legend=FALSE, lwd=2, col=1, 
     mar.panel=0.2+c(4,4,0,0), hsep=2)


###################################################
### code chunk number 74: 11validate.Rnw:1967-1969
###################################################
jfit <- ppm(residualspaper$Fig1 ~ polynom(x,y,3))
jKr <- Kres(jfit, correction="best")


###################################################
### code chunk number 75: 11validate.Rnw:1975-1976
###################################################
fvnames(jKr, ".s") <- c("ihi", "ilo")


###################################################
### code chunk number 76: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 77: 11validate.Rnw:1979-1980
###################################################
setmargins(0.2+c(4,4,0,0))


###################################################
### code chunk number 78: 11validate.Rnw:1984-1985
###################################################
plot(jKr, main="", legend=FALSE, lwd=2, col=1)


###################################################
### code chunk number 79: murchSetup
###################################################
mur <- lapply(murchison, rescale, s=1000, unitname="km")
attach(mur)
green <- greenstone
dfault <- distfun(faults)


###################################################
### code chunk number 80: murfit1x
###################################################
murfit1x <- ppm(gold ~ green * dfault, eps=1)


###################################################
### code chunk number 81: murlev1x
###################################################
if(draftversion) {
  reload.or.compute(datafilepath("murlev1xCoarse.rda"), {
    murlev1x <- leverage(murfit1x)
    murinf1x <- influence(murfit1x)
    murdfb1x <- dfbetas(murfit1x)
  })
} else {
  reload.or.compute(datafilepath("murlev1x.rda"), {
    murlev1x <- leverage(murfit1x)
    murinf1x <- influence(murfit1x)
    murdfb1x <- dfbetas(murfit1x)
  })
}  


###################################################
### code chunk number 82: 11validate.Rnw:2292-2296 (eval = FALSE)
###################################################
## murfit1x <- ppm(gold ~ green * dfault, eps=1)
## murlev1x <- leverage(murfit1x)
## murinf1x <- influence(murfit1x)
## murdfb1x <- dfbetas(murfit1x)


###################################################
### code chunk number 83: 11validate.Rnw:2302-2306
###################################################
persp(as.im(murlev1x), 
      col=if(monochrome) "yellow" else "grey", border=NA, 
      theta=-30, phi=25, shade=0.75, main="",
      zlab="leverage")


###################################################
### code chunk number 84: 11validate.Rnw:2326-2329
###################################################
## boxes surrounding highly influential points
murcorner <- owin(c(635, 682.6), c(7066, 7095))
murzoom <- owin(c(377,438), c(6890, 6926))


###################################################
### code chunk number 85: 11validate.Rnw:2331-2333
###################################################
## determine space for influence plot
B <- as.owin(plot(murinf1x, do.plot=FALSE))


###################################################
### code chunk number 86: MurchisonL.Rnw:3-5
###################################################
newplot(9, 0.5)
setmargins(0.1)


###################################################
### code chunk number 87: 11validate.Rnw:2340-2344
###################################################
plot(B, main="", type="n")
plot(murcorner, col=grey(0.7), border=NA, add=TRUE)
plot(murzoom, col=grey(0.7), border=NA, add=TRUE)
plot(murinf1x, add=TRUE, show.all=TRUE, main="")


###################################################
### code chunk number 88: 11validate.Rnw:2373-2393
###################################################
MurDetail <- function(b, k=NULL) { 
  ## plot detail of the Murchison data in rectangle 'b'
  with(mur, {
    plot(b, type="n", main="")
    plot(greenstone[b], add=TRUE,
         border=NULL, col=if(monochrome) "grey" else "lightgreen")
    plot(faults[b], add=TRUE, lwd=3)
    plot(gold[b], add=TRUE, pch=1, cex=2.5, lwd=2)
    if(!is.null(k))
      plot(gold[k], add=TRUE, pch=16, cex=2.5, lwd=2)
    plot(b, add=TRUE, lty=3, lwd=2)
  })
}
murlayered <- with(mur, 
                   layered(as.rectangle(gold), greenstone, faults, gold))
layerplotargs(murlayered) <- list(
  list(),                                
  list(border=NULL, col=if(monochrome) "grey" else "lightgreen"),
  list(lwd=3),
  list(pch=10, cex=1.2, lwd=2))


###################################################
### code chunk number 89: MurchCorner2.Rnw:3-5
###################################################
newplot(10, 1)
setmargins(0.2)


###################################################
### code chunk number 90: 11validate.Rnw:2400-2404
###################################################
plot(solist(murlayered[,murcorner], murinf1x[murcorner]),
     main="", main.panel="", equal.scales=TRUE,
     leg.side="right", mar.panel=0.3+c(0,0,0,2.5), hsep=-1.5,
     leg.args=list(sep.frac = 0.125))


###################################################
### code chunk number 91: MurchOutlier2.Rnw:3-5
###################################################
newplot(10.8, 1)
setmargins(0.2)


###################################################
### code chunk number 92: 11validate.Rnw:2424-2427
###################################################
plot(solist(murlayered[,murzoom], murinf1x[murzoom]),
     main="", main.panel="", equal.scales=TRUE,
     leg.side="right", mar.panel=0.3+c(0,0,0,2.2), hsep=-1.5)


###################################################
### code chunk number 93: augmentx
###################################################
## This code helps to accelerate the plotting 
murdfb1x <- augment.msr(murdfb1x)


###################################################
### code chunk number 94: MurchOutlier2x2.Rnw:3-5
###################################################
newplot(14, 1)
setmargins(0.2)


###################################################
### code chunk number 95: 11validate.Rnw:2464-2468
###################################################
plot(murdfb1x[murzoom], main="", mar.panel=0.2+c(0,1,1,2)/2, 
     hsep=2, vsep=1, etch=TRUE,
     cex.main=0.85, ribargs=list(las=1), ribscale=1e6,
     leg.args=list(labelmap=1000))


###################################################
### code chunk number 96: 11validate.Rnw:2479-2480
###################################################
rm(murlev1x,murinf1x,murdfb1x)


###################################################
### code chunk number 97: 11validate.Rnw:2499-2501
###################################################
DL <- as.im(dfault)
subW <- (DL <= bdist.pixels(Window(DL)))


###################################################
### code chunk number 98: chorleyload
###################################################
if(draftversion) {
  load(datafilepath("chorleyCoarse.rda"))
  draftmessage <- 
    "using coarse quadrature scheme, eps=0.5, in draft version"
} else {
  load(datafilepath("chorley.rda"))
  draftmessage <- NULL
}


###################################################
### code chunk number 99: chorleyDfitAgain
###################################################
d2incin <- function(x, y, xincin=354.5, yincin=413.6) {
  (x - xincin)^2 + (y - yincin)^2
}
raisin <- function(x,y, alpha, beta) {
  1 + alpha * exp( - beta * d2incin(x,y))
}
chorleyDfit <- ippm(Q ~offset(log(smo) + log(raisin)), 
                    start=list(alpha=5, beta=1))


###################################################
### code chunk number 100: morescore
###################################################
Zalpha <- function(x,y, alpha, beta) {
  expbit <- exp( - beta * d2incin(x,y))
  expbit/(1 + alpha * expbit)
}
Zbeta <- function(x,y, alpha, beta) {
  d2 <- d2incin(x,y)
  topbit <- alpha * exp( - beta * d2)
  - d2 * topbit/(1 + topbit)
}
Zscore <- list(alpha=Zalpha, beta=Zbeta)


###################################################
### code chunk number 101: moreHessian
###################################################
Zaa <- function(x,y, alpha, beta) {
  expbit <- exp( - beta * d2incin(x,y))
  -(expbit/(1 + alpha * expbit))^2
}
Zab <- function(x,y, alpha, beta) {
  d2 <- d2incin(x,y)
  expbit <- exp( - beta * d2)
  - d2 * expbit/(1 + alpha * expbit)^2
}
Zbb <- function(x,y, alpha, beta) {
  d2 <- d2incin(x,y)
  topbit <- alpha * exp( - beta * d2)
  (d2^2) * topbit/(1 + topbit)^2
}
Zhess <- list(aa=Zaa, ab=Zab, ba=Zab, bb=Zbb)


###################################################
### code chunk number 102: chorleyDXcalc
###################################################
reload.or.compute(datafilepath("chorleydigglev.rda"), {
  chorleyDXlev <- leverage(chorleyDfit, iScore=Zscore, iHessian=Zhess)
  chorleyDXinf <- influence(chorleyDfit, iScore=Zscore, iHessian=Zhess)
  chorleyDXdfb <- dfbetas(chorleyDfit, iScore=Zscore, iHessian=Zhess)
  chorleyDXdfbsmo <- Smooth(chorleyDXdfb, sigma=1.5)
})


###################################################
### code chunk number 103: 11validate.Rnw:2608-2615 (eval = FALSE)
###################################################
## chorleyDXlev <- leverage(chorleyDfit, 
##                          iScore=Zscore, iHessian=Zhess)
## chorleyDXinf <- influence(chorleyDfit, 
##                           iScore=Zscore, iHessian=Zhess)
## chorleyDXdfb <- dfbetas(chorleyDfit, 
##                         iScore=Zscore, iHessian=Zhess)
## chorleyDXdfbsmo <- Smooth(chorleyDXdfb, sigma=1.5)


###################################################
### code chunk number 104: 11validate.Rnw:2620-2622
###################################################
logbexpr <- expression(log(1 + 
    alpha * exp( - beta * ((x - 354.5)^2 + (y-413.6)^2))))


###################################################
### code chunk number 105: 11validate.Rnw:2625-2627
###################################################
logB <- deriv(logbexpr, c("alpha", "beta"), 
              c("x", "y", "alpha", "beta"), hessian=TRUE)


###################################################
### code chunk number 106: 11validate.Rnw:2642-2644
###################################################
chorleyDfitI <- ippm(Q ~offset(log(smo) + logB),
                     start=list(alpha=10, beta=1))


###################################################
### code chunk number 107: 11validate.Rnw:2646-2647
###################################################
chorleyDfitI


###################################################
### code chunk number 108: 11validate.Rnw:2649-2652 (eval = FALSE)
###################################################
## chorleyDXlev <- leverage(chorleyDfitI)
## chorleyDXinf <- influence(chorleyDfitI)
## chorleyDXdfb <- dfbetas(chorleyDfitI)


###################################################
### code chunk number 109: 11validate.Rnw:2682-2684
###################################################
## Box surrounding incinerator and suspect cases:
ibox <- owin(c(352.2, 358.0), c(411.5, 416.0))


###################################################
### code chunk number 110: 11validate.Rnw:2686-2687
###################################################
spatstat.options(image.colfun=greytoblack)


###################################################
### code chunk number 111: ChorleyR.Rnw:3-5
###################################################
newplot(9, 0.65)
setmargins(0, 0, 0, 2)


###################################################
### code chunk number 112: chorleyDXlev
###################################################
plot(chorleyDXlev, main="", box=FALSE)
plot(Window(chorley), add=TRUE)


###################################################
### code chunk number 113: ChorleyZoomR.Rnw:3-5
###################################################
newplot(8, 0.5)
setmargins(0,0,0,2)


###################################################
### code chunk number 114: chorleyDXlevZ
###################################################
plot(chorleyDXlev[ibox], main="", box=FALSE)
plot(edges(Window(chorley))[ibox], add=TRUE, lwd=2)
points(chorley.extra[["incin"]], pch=10, cex=2, lwd=2)


###################################################
### code chunk number 115: ChorleyL.Rnw:3-5
###################################################
newplot(9,0.65)
setmargins(0, 2, 0, 0)


###################################################
### code chunk number 116: chorleyDXinf
###################################################
sy <- plot(chorleyDXinf, main="", maxsize=0.7, lwd=3)


###################################################
### code chunk number 117: ChorleyZoomL.Rnw:3-5
###################################################
newplot(8, 0.5)
setmargins(0,2,0,0)


###################################################
### code chunk number 118: chorleyDXinfZ
###################################################
plot(chorleyDXinf[ibox], main="", box=FALSE, symap=sy)
plot(edges(as.owin(chorley))[ibox], add=TRUE, lwd=2)
points(chorley.extra[["incin"]], pch=10, cex=1.2)


###################################################
### code chunk number 119: 11validate.Rnw:2739-2740
###################################################
spatstat.options(image.colfun=darktolight)


###################################################
### code chunk number 120: ChorleyZoom2LR.Rnw:4-6
###################################################
newplot(19, 1)
setmargins(0,2,0,2)


###################################################
### code chunk number 121: 11validate.Rnw:2744-2745
###################################################
setmargins(0,1,0,1)


###################################################
### code chunk number 122: chorleyDXdfbZ
###################################################
plot(chorleyDXdfb[ibox, 2:3], 
     main="", main.panel="", mar.panel=0, hsep=3,
     cols="white", maxsize=1.75,
     leg.args=list(col="black"), box=FALSE, etch=TRUE, lwd=2,
     panel.end=edges(as.owin(chorley))[ibox])