RDX2 X  g14.1 source@ 1function(device="",new=F, ycol = -2.1-(0:9)*2.1){ 1 if(device!="")hardcopy(width=5.4, height=5.0, ) device=device) ( else if(new)x11(width=6.0, height=9) > ftype <- c("plain","bold","italic","bold italic","symbol")  yline <- 4.2  ypmax <- 20  farleft <- -6 ( oldpar <- par(mar=c(0,0,0.5,0))  on.exit(par(oldpar)) D plot(c(-8,31), c(-1, ypmax), type="n", xlab="", ylab="", axes=F)  chh <- par()$cxy[2] K text(0:25, rep(ypmax+0.8*chh,26), paste(0:25), srt=90, cex=0.75, xpd=T) 7 text(-1.5, ypmax+0.8*chh, "pch =", cex=0.75, xpd=T) + text(farleft, ypmax-0.5, "font", xpd=T) ) points(0:25, rep(ypmax,26), pch=0:25) / letterfont <- function(ypos=ypmax, font=2){  par(font=font) ; text(-1.35, ypos, "64-76", cex=0.75, adj=1, xpd=TRUE) 4 text(19-1.35, ypos, "96-108", cex=0.75, adj=1) . points(c(0:12), rep(ypos,13), pch=64:76) - points(19:31, rep(ypos,13), pch=96:108) & text(farleft, ypos, paste(font),  xpd=T) 4 text(farleft, ypos-0.5, ftype[font], cex=0.75)  } B plotfont <- function(xpos=0:31, ypos=ypmax, font=1, sel32=2:8, ( showfont=TRUE){  par(font=font) i <- 0  for (j in sel32){  i <- i+1 C text(-1.35, ypos-i+1, paste((j-1)*32,"-", j*32-1, sep=""), ' cex=0.75, adj=1, xpd=TRUE) ; points(xpos, rep(ypos-i+1,32), pch=(j-1)*32+(0:31))  } B lines(rep(-1.05,2),c(ypos-length(sel32)+1, ypos)+c(-.4, .4), xpd=T, col="grey40")  if(showfont){ / text(farleft, ypos, paste(font), xpd=T) = text(farleft, ypos-0.5, ftype[font], cex=0.75, xpd=T)  }  } / plotfont(ypos=ypmax-1.5, font=1, sel32=2:8) 7 for(j in 2:4)letterfont(ypos=ypmax-6-1.4*j, font=j) . plotfont(ypos=ypmax-13.1, font=5, sel32=3) A plotfont(xpos=c(-0.5,1:31), ypos=ypmax-14.1, font=5, sel32=4,  showfont=FALSE)  par(font=1) - text(farleft, yline+0.9, "lty", xpd=TRUE) < ltypes <- c("blank","solid","dashed","dotted","dotdash", % "longdash","twodash") 2 lcode <- c("","","44","13","1343","73","2262") < for(i in 0:6){lines(c(3,31), c(yline-0.8*i,yline-0.8*i), , lty=i, lwd=2, xpd=T) @ text(farleft, yline-0.8*i, paste(i), xpd=TRUE) G text(farleft+2.5, yline-0.8*i, ltypes[i+1], cex=0.85, xpd=TRUE) D text(farleft+6, yline-0.8*i, lcode[i+1], cex=0.85, xpd=TRUE)  }  if(device!="")dev.off()  }ў§$ device  new F ycol -џ@ЬЬЬЬЬЭў * ( :@"ўў@ЬЬЬЬЬЭўўў { if !=џ ў hardcopy width@™™™™™š height@џџў џџ x11џ@џ@"ўўў <- ftype c plain bold italic bold italic symbolўўџ yline@ЬЬЬЬЬЭўџ ypmax@4ўџ farleftџ@ўўџ oldpar par marџ?рўўў on.exitџџўў plotџџ@ ў@?ўџџ?№ўџў type n xlab  ylab  axesџўџ chh [ $џў cxyў@ўў text џ@9ў rep +џџ?щ™™™™™š!џўў@:ў paste џ@9ўў srt@V€ cex?ш xpd Tў$џџ?јў&џџџ?щ™™™™™š!џўў pch =)џ?ш*џ+џў$џџџџ?рў font*џ+џў points џ@9ў%џџ@:ў pch џ@9ўўџ letterfont function$ yposџ$ font@ў џџ1џ1џў$џџ?ѕ™™™™™šў0џ 64-76)џ?ш adj?№*џ ў$џџ@3?ѕ™™™™™šў0џ 96-108)џ?ш2џ?№ў,џџ џ@(ўў%џ0џ@*ў-џ џ@P@Sўў,џ џ@3@?ў%џ0џ@*ў-џ џ@X@[ўў$џџ0џ'џ1џў*џ+џў$џџџ0џ?рў"џџ1џў)џ?шўў function(ypos=ypmax, font=2){  par(font=font) ; text(-1.35, ypos, "64-76", cex=0.75, adj=1, xpd=TRUE) 4 text(19-1.35, ypos, "96-108", cex=0.75, adj=1) . points(c(0:12), rep(ypos,13), pch=64:76) - points(19:31, rep(ypos,13), pch=96:108) & text(farleft, ypos, paste(font),  xpd=T) 4 text(farleft, ypos-0.5, ftype[font], cex=0.75)  }ўўџ plotfont/џ$ xpos џ@?ў$0џџ$1џ?№$ sel32 џ@@ ў$ showfont ў џџ1џ1џўџ iў for j5џ џџ7џ&џ7џ?№ўў$џџ?ѕ™™™™™šў&џџ0џ7џў?№ў'џџ џџ9џ?№ўў@@ў -џџ9џ@@ў?№ў sep ў)џ?ш2џ?№*џ ў,џ4џ%џ&џџ0џ7џў?№ў@@ў-џ&џџ џџ9џ?№ўў@@ў џ џ@?ўўўўўў lines%џџ?№ЬЬЬЬЬЭў@ў&џџ&џџ0џ length5џўў?№ў0џўџџ?й™™™™™šў?й™™™™™šўў*џ+џ col grey40ў џ6џ џ$џџ0џ'џ1џў*џ+џў$џџџ0џ?рў"џџ1џў)џ?ш*џ+џўўўў 2function(xpos=0:31, ypos=ypmax, font=1, sel32=2:8, ( showfont=TRUE){  par(font=font) i <- 0  for (j in sel32){  i <- i+1 C text(-1.35, ypos-i+1, paste((j-1)*32,"-", j*32-1, sep=""), ' cex=0.75, adj=1, xpd=TRUE) ; points(xpos, rep(ypos-i+1,32), pch=(j-1)*32+(0:31))  } B lines(rep(-1.05,2),c(ypos-length(sel32)+1, ypos)+c(-.4, .4), xpd=T, col="grey40")  if(showfont){ / text(farleft, ypos, paste(font), xpd=T) = text(farleft, ypos-0.5, ftype[font], cex=0.75, xpd=T)  }  }ўў3џ0џџџ?јў1џ?№5џ џ@@ ўў8џ9џ џ@@ў.џ0џџџџ@ўџ?іffffff9џўў1џ9џўў3џ0џџџ@*333333ў1џ@5џ@ў3џ4џџџ?рў џ?№@?ўў0џџџ@,333333ў1џ@5џ@6џ ўџ1џ?№ў$џџ&џџ?ьЬЬЬЬЬЭў lty*џ ўџ ltypesџ blank solid dashed dotted dotdash longdash twodashўўџ lcodeџ   44 13 1343 73 2262ўў8џ7џ џ@ў џ;џџ@@?ўџџџџ?щ™™™™™š7џўўџџџ?щ™™™™™š7џўўў lty7џ lwd@*џ+џў$џџџџџ?щ™™™™™š7џўў'џ7џў*џ ў$џ&џџ@ўџџџ?щ™™™™™š7џўў"џ>џ&џ7џ?№ўў)џ?ы333333*џ ў$џ&џџ@ўџџџ?щ™™™™™š7џўў"џ?џ&џ7џ?№ўў)џ?ы333333*џ ўўў џ џџ ў dev.offўўў g14.2џ function(device=""){ ; if (device != "") O hardcopy(width = 2.25, height = 2.5, pointsize=c(7,4), device = device)  annotate <- function(b){ A ## Fit least squares regression line: log(wood) vs log(dbh) L b <- coef(lm(log(wood) ~ log(dbh), data=Acmena[-largest2[1], ])) 2 a <- round(exp(b[1]),3); b2 <- round(b[2],3) F arg1 <- bquote(italic(y) == .(A) * phantom(0) * italic(x)^.(B), % list(A=a, B=b2)) C arg2 <- quote("where " * italic(y) * " " * "= wood; " * " " 0 * italic(x) * " " * "= dbh") H legend("topleft", legend=do.call("expression", list(arg1, arg2)), bty="n", cex=0.8)  }  oldpar <- par(pty="s")  on.exit(par(oldpar)) ; Acmena <- subset(rainforest, species=="Acmena smithii") A plot(wood~dbh, data=Acmena, xlim=1.025*c(0, max(Acmena$dbh)))  largest <- max(Acmena$dbh) 7 Acmena.lm <- lm(log(wood) ~ log(dbh), data=Acmena, * subset=dbh < max(dbh))  b <- coef(Acmena.lm) , curve(exp(b[1])*x^b[2], to=largest2[2],  add=TRUE) = curve(exp(b[1])*x^b[2], from=largest2[2], to=largest2[1],  lty=2, add=TRUE)  annotate(b=round(b,3)) I mtext(side=3, line=1.5, substitute(italic(tx) * ": " * "wood vs dbh", 8 list(tx="Acmena smithii")), cex=1.1)  if(device!="")dev.off()  }ў§џ ў srcref M srcfileђ encoding native.enc timestampAбнˆЛ class POSIXt POSIXctў filename /tmp/johnm.g14.2.R wd /Users/johnm/r/ch14ўўIџ srcfileўIџ srcrefў EџFџIџ srcrefў EџFџIџ srcrefў EџFџIџ srcrefў ;EџFџIџ srcrefў AEџFџIџ srcrefў EџFџIџ srcrefў *EџFџIџ srcrefў EџFџIџ srcrefў EџFџIџ srcrefў EџFџIџ srcrefў EџFџIџ srcrefў 8EџFџIџ srcrefў EџFџIџ srcrefўEџFџў џ џ џџ ўџџ@џ@ pointsizeџ@@ўџџўўџ annotate/џ$ bћўDџ FEџFџIџ srcrefў EџFџIџ srcrefў  2EџFџIџ srcrefў   %EџFџIџ srcrefў   0EџFџIџ srcrefў  EџFџIџ srcrefўEџFџў џџNџ coef lm ~ log woodўRџ dbhўў data"џ Acmenaџ"џ largest2?№ўўћўўўўџ a round exp"џNџ?№ўў@ўўџ b2Yџ"џNџ@ў@ўўџ arg1 bquote == italic yўџџ . Aў phantomўў ^_џ xўaџ Bўўўў listbџXџfџ[џўўўџ arg2 quoteџџџџџџџ where _џ`џўў  ў = wood; ў  ў_џeџўў  ў = dbhўўў legend topleftjџ do.call expressiongџ\џhџўў bty n)џ?щ™™™™™šўў function(b){ A ## Fit least squares regression line: log(wood) vs log(dbh) L b <- coef(lm(log(wood) ~ log(dbh), data=Acmena[-largest2[1], ])) 2 a <- round(exp(b[1]),3); b2 <- round(b[2],3) F arg1 <- bquote(italic(y) == .(A) * phantom(0) * italic(x)^.(B), % list(A=a, B=b2)) C arg2 <- quote("where " * italic(y) * " " * "= wood; " * " " 0 * italic(x) * " " * "= dbh") H legend("topleft", legend=do.call("expression", list(arg1, arg2)), bty="n", cex=0.8)  }ўўџџџ pty sўўџџџўўџVџ subset rainforest^џ species Acmena smithiiўўўџQџSџTџўUџVџ xlimџ?№ffffffџ max#џVџTџўўўўўџ largestrџ#џVџTџўўўџ Acmena.lmPџQџRџSџўRџTџўўUџVџnџ <TџrџTџўўўўџNџOџtџўў curveџZџ"џNџ?№ўўdџeџ"џNџ@ўўў to"џWџ@ў add ўvџџZџ"џNџ?№ўўdџeџ"џNџ@ўўў from"џWџ@ўwџ"џWџ?№ў@џ@xџ ўMџNџYџNџ@ўў mtext side@ line?ј substituteџџ_џ txў : ў wood vs dbhўgџ~џ Acmena smithiiўў)џ?ё™™™™™šў џ џџ ўBџўўў gdumpџ 7function(fnam=NULL, prefix="~/r-book/ed2/figures/figs",  splitchar="/ch"){  if(is.null(fnam)){  path <- getwd() 7 pathtag <- strsplit(path, "/ch", fixed=TRUE)[[1]] 5 fnam <- paste(prefix, pathtag[length(pathtag)], ! ".R", sep="")  } - else fnam <- paste(prefix, fnam, sep="/") H objnames <- c(objects(pattern="^g", envir=sys.frame(0)), "hardcopy") & cat("\nDump to file:", fnam, "\n")  print(objnames)  dump(objnames, fnam)  }ў§ fnamў prefix ~/r-book/ed2/figures/figs splitchar /chў џ џ is.null€џў џџ path getwdўўџ pathtag [[ strsplit„џ /ch fixed ў?№ўўџ€џ'џџ"џ†џ<џ†џўў .R:џ ўўўџ€џ'џџ€џ:џ /ўўўџ objnamesџ objects pattern ^g envir sys.frameўў hardcopyўў cat  Dump to file:€џ  ў printŠџў dumpŠџ€џўў gsaveџ 7function(fnam=NULL, prefix="~/r-book/ed2/figures/figs", @ splitchar="/ch", xtras=c("renum.fun","renum.files")){  if(is.null(fnam)){  path <- getwd() 7 pathtag <- strsplit(path, "/ch", fixed=TRUE)[[1]] 5 fnam <- paste(prefix, pathtag[length(pathtag)], % ".RData", sep="")  } - else fnam <- paste(prefix, fnam, sep="/") C objnames <- c(objects(pattern="^g", envir=sys.frame(0)), xtras) & cat("\nDump to file:", fnam, "\n")  print(objnames) " save(list=objnames, file=fnam)  }ў§€џўџ ~/r-book/ed2/figures/figs‚џ /ch xtrasџ renum.fun renum.filesўў џ џƒџ€џў џџ„џ…џўўџ†џ‡џˆџ„џ /ch‰џ ў?№ўўџ€џ'џџ"џ†џ<џ†џўў .RData:џ ўўўџ€џ'џџ€џ:џ /ўўўџŠџџ‹џŒџ ^gџŽџўў“џўўџ  Dump to file:€џ  ўџŠџў savegџŠџ file€џўў renum.funџ Dfunction(from.prefix="g12", to.prefix="g",from=4:1, to=4:1, doit=F){  path <- getwd() 5 pathtag <- strsplit(path, "/ch", fixed=TRUE)[[1]] & endbit <- pathtag[length(pathtag)] 1 to.prefix <- paste(to.prefix, endbit, sep="") 4 if(is.null(from.prefix))from.prefix <- to.prefix  for(i in 1:length(to)) M {txt<-paste(to.prefix,".",to[i]," <- ", from.prefix,".",from[i],sep="") 7 if(doit)eval(parse(text=txt),envir=sys.frame(0)) " if(from.prefix!=to.prefix){ B rm.txt <- paste("rm(",from.prefix,".",from[i],")",sep="") < if(doit)eval(parse(text=rm.txt),envir=sys.frame(0))  }  print(txt)  print(rm.txt)  }  }ў§ from.prefix g12 to.prefix gyџ џ@?№ўwџ џ@?№ў$ doitџў џџ„џ…џўўџ†џ‡џˆџ„џ /ch‰џ ў?№ўўџ endbit"џ†џ<џ†џўўўџ˜џ'џ˜џšџ:џ ўў џƒџ—џўџ—џ˜џўў8џ7џ џ?№<џwџўў џџ txt'џ˜џ ."џwџ7џў  <- —џ ."џyџ7џў:џ ўў џ™џ eval parse$џ›џўџŽџўўў џ џ—џ˜џў џџ rm.txt'џ rm(—џ ."џyџ7џў ):џ ўў џ™џœџџ$џžџўџŽџўўўўўџ›џўџžџўўўў renum.filesџ Hfunction(from.prefix="~/r-book/ed2/Art/", to.prefix="~/r-book/ed2/Art/", ' from=20:7, to=21:8, doit=F){  path <- getwd() 5 pathtag <- strsplit(path, "/ch", fixed=TRUE)[[1]] & endbit <- pathtag[length(pathtag)] 2 if(nchar(endbit)==2)chap <- paste(endbit) else ' chap <- paste("0",endbit,sep="") 8 from.prefix <- paste(from.prefix, chap, "-", sep="") 4 to.prefix <- paste(to.prefix, chap, "-", sep="")  for(i in 1:length(from)){ 8 if (from[i]<=9) ltext <- paste("0",from[i],sep="") " else ltext <- paste(from[i]) 4 if (to[i]<=9) rtext <- paste("0",to[i],sep="") , else rtext <- paste(to[i]) 8 txt<-paste("mv ", from.prefix, ltext, ".eps", " ", 2 to.prefix, rtext, ".eps", sep="") ; backup<-paste("cp ", from.prefix, ltext, ".eps", " ", # "archive", sep="")  if(doit)system(backup)  if(doit)system(txt)  print(backup)  print(txt)  }  }ў§—џ ~/r-book/ed2/Art/˜џ ~/r-book/ed2/Art/yџ џ@4@ўwџ џ@5@ ў™џџў џџ„џ…џўўџ†џ‡џˆџ„џ /ch‰џ ў?№ўўџšџ"џ†џ<џ†џўўў џ^џ ncharšџў@ўџ chap'џšџўўџЁџ'џ 0šџ:џ ўўўџ—џ'џ—џЁџ -:џ ўўџ˜џ'џ˜џЁџ -:џ ўў8џ7џ џ?№<џyџўў џ џ <="џyџ7џў@"ўџ ltext'џ 0"џyџ7џў:џ ўўџЃџ'џ"џyџ7џўўўў џЂџ"џwџ7џў@"ўџ rtext'џ 0"џwџ7џў:џ ўўџЄџ'џ"џwџ7џўўўўџ›џ'џ mv —џЃџ .eps  ˜џЄџ .eps:џ ўўџ backup'џ cp —џЃџ .eps   archive:џ ўў џ™џ systemЅџўў џ™џІџ›џўўџЅџўџ›џўўўўў