Nothing
## ----setup, results="hide", echo=FALSE--------------------------------------------------
knitr::opts_chunk$set(echo=FALSE, fig.height = 5, fig.width = 5)
options(width=90)
## ----lee1, eval=TRUE, fig.height=7.5, fig.width=5---------------------------------------
library(agridat)
data(lee.potatoblight)
dat <- lee.potatoblight
# Note the progression to lower scores as time passes in each year
skp <- c(rep(0,10),
rep(0,7),1,1,1,
rep(0,8),1,1,
rep(0,6),1,1,1,1,
rep(0,5),1,1,1,1,1,
rep(0,5),1,1,1,1,1,
rep(0,6),1,1,1,1,
rep(0,5),1,1,1,1,1,
rep(0,5),1,1,1,1,1,
rep(0,5),1,1,1,1,1)
if(require("desplot")){
desplot(dat, y ~ col*row|date,
main="lee.potatoblight", #col.regions=RedGrayBlue,
between=list(y=.3), strip.cex =.6,
layout=c(10,11), skip=as.logical(skp))
}
## ----lee2, eval=TRUE--------------------------------------------------------------------
library(agridat)
# 1983 only. I.Hardy succumbs quickly
dat <- lee.potatoblight
dat$dd <- as.Date(dat$date)
d83 <- droplevels(subset(dat, year==1983))
if(require("latticeExtra")){
foo <- xyplot(y ~ dd|gen, d83, group=rep,
xlab="Date", ylab="Blight resistance score",
main="lee.potatoblight 1983", as.table=TRUE,
par.settings=list(
superpose.symbol=list(col=c("black","red","royalblue","#009900","dark orange"),
pch=c("1","2","3","4","5"))),
scales=list(alternating=FALSE, x=list(rot=90, cex=.7)))
foo + xyplot(y ~ dd|gen, d83, subset=year==1983, type='smooth', col='gray80')
}
## ----harrison, eval=TRUE, fig.height=6--------------------------------------------------
library(agridat)
data(harrison.priors)
d1 <- subset(harrison.priors, substance=="daidzein")
d1 <- d1[ , c("source","number","min","max")]
out <- data.frame(source=vector("character"),
vals=vector("numeric"))
for(ii in 1:nrow(d1)){
n <- d1[ii,'number']
mi <- d1[ii,'min']; ma <- d1[ii,'max']
mu <- mean(log(c(mi,ma)))
sig <- (log(mi) - mu ) / qnorm(1/(1+n))
vals <- exp(mu + sig*qnorm(seq(1/(1+n), to=n/(1+n), length=n)))
out <- rbind(out, data.frame(source=d1[ii,'source'], vals=vals))
}
out <- droplevels(out) # Extra levels exist in d1
if(require("latticeExtra")) {
foo0 <- dotplot(source ~ vals, out,
main="harrison.priors", xlab="Daidzein level",
panel=function(x,y,...){
panel.dotplot(x,y,...)
#browser()
# Minimum for each row
x2l <- tapply(x, y, min)
x2r <- tapply(x, y, max)
y2 <- tapply(y, y, "[", 1)
panel.xyplot(x2l, y2, pch=16, cex=1.5, col="navy")
panel.xyplot(x2r, y2, pch=16, cex=1.5, col="navy")
},
# Hack. Add blanks for extra space on graph
ylim=c(levels(out$source),"","","","prior","Constructed","",""))
# Now calculate parameters for a common lognormal distribution
mu0 <- mean(log(out$vals))
sd0 <- sd(log(out$vals))
xvals <- seq(0,2000, length=100)
library("latticeExtra")
foo0 + xyplot((19+4000*dlnorm(xvals, mu0, sd0))~xvals, type='l',
panel=function(x,y,...){
panel.xyplot(x,y,...)
panel.abline(h=19, col="gray90")
})
}
## ----mead, eval=TRUE--------------------------------------------------------------------
library(agridat)
data(mead.germination)
dat <- mead.germination
# dat <- transform(dat, concf=factor(conc))
# Use log conc as a covariate.
# Note, my graph showing the density of the fit is similar to graphs
# found at the following site. Did I get my idea here? I don't know.
# http://www.unc.edu/courses/2010fall/ecol/563/001/docs/lectures/lecture18.htm#numerical
dat <- transform(dat, logconc=log(conc+.01))
m6 <- glm(cbind(germ, seeds-germ) ~ temp + temp:logconc, data=dat,
family=binomial(link="logit"))
# Estimates of p for the binomial densities
newb <- expand.grid(temp=c('T1','T2','T3','T4'), logconc=log(c(0,.1,1,10)+.01))
newb$pct <- predict(m6, new=newb, type='response')
# Binomial density
if(require("latticeExtra")){
foob <- xyplot(pct~logconc |temp, newb,
xlim=c(-5.5, 4.5), ylim=c(-2, 53), as.table=TRUE,
xlab="Log concentration",
ylab="Seeds germinating (out of 50). Binomial density.",
main="mead.germination", #layout=c(4,1),
panel=function(x,y,...){
for(ix in 1:4){
quan <- qbinom(c(.025, .975), size=50, prob=y[ix])
yval <- seq(min(quan), max(quan), by=1)
off <- x[ix]
xl <- off + rep(0, length(yval))
# Constant multiuplier of 8 chosen by trial and error
xr <- off + 8 * dbinom(yval, size=50, prob=y[ix])
panel.segments(xl,yval,xr, yval, cex=.35, lwd=3, col="gray70")
}
})
# Add mean response line with equally-spaced points on the log scale
newl <- expand.grid(temp=c('T1','T2','T3','T4'),
logconc=seq(log(.01), log(10.01), length=50))
newl$pct <- predict(m6, new=newl, type='response')
# Logistic curve
fool <- xyplot(pct~logconc|temp, newl,
panel=function(x,y,...){
panel.points(x, 50*y, type='l', col='blue')
})
# Data points last, on top of everything
food <- xyplot(germ~logconc|temp, dat, layout=c(4,1),
ylab="Seeds germinating (out of 50)", cex=1.5, pch=20, col='black')
foob + fool + food
}
## ----gomez, eval=TRUE-------------------------------------------------------------------
library(agridat)
data(gomez.stripsplitplot)
dat <- gomez.stripsplitplot
# Layout
if(require("desplot")){
desplot(dat, gen~col*row,
out1=rep, col=nitro, text=planting, cex=1,
main="gomez.stripsplitplot")
}
## ----gomez2, eval=TRUE------------------------------------------------------------------
library(agridat)
data(gomez.splitsplit)
dat <- gomez.splitsplit
dat$nitrogen <- factor(dat$nitro)
if(require("HH")){
#position(dat$rep) <- position(dat$management) <-
# position(dat$gen) <- c(10,70,130)
#position(dat$nitrogen) <- c(0,50,80,110,140)
interaction2wt(yield~rep+nitrogen+management+gen, data=dat,
main="gomez.splitsplit",
x.between=0, y.between=0,
relation=list(x="free", y="same"),
rot=c(90,0), xlab="",
par.strip.text.input=list(cex=.8))
}
## ----keen, eval=TRUE, fig.width=7, fig.height=7.5---------------------------------------
library(agridat)
data(keen.potatodamage)
dat <- keen.potatodamage
# Energy E1, Rod R4, Weight W1 have higher proportions of severe damage
# Rod 8 has the least damage
d2 <- xtabs(count~energy+rod+gen+weight+damage, data=dat)
mosaicplot(d2, color=c("lemonchiffon1","moccasin","lightsalmon1","indianred"),
xlab="Energy / Genotype", ylab="Rod / Weight",
main="keen.potatodamage",
off=c(3,10,10,8,0),border="gray50")
## ----wright, eval=TRUE------------------------------------------------------------------
library(agridat)
data(minnesota.barley.yield)
data(minnesota.barley.weather)
dat <- minnesota.barley.yield
datw <- minnesota.barley.weather
# Weather trends over time
if(require("latticeExtra")){
#useOuterStrips(xyplot(cdd~mo|year*site, datw, groups=year,
#main="minnesota.barley", xlab="month", ylab="Cooling degree days",
#subset=(mo > 3 & mo < 10), scales=list(alternating=FALSE),
#type='l', auto.key=list(columns=5)))
# Total cooling/heating/precip in Apr-Aug for each site/yr
ww <- subset(datw, mo>=4 & mo<=8)
ww <- aggregate(cbind(cdd,hdd,precip)~site+year, data=ww, sum)
# Average yield per each site/env
yy <- aggregate(yield~site+year, dat, mean)
minn <- merge(ww, yy)
# Higher yields generally associated with cooler temps, more precip
library("reshape2")
me <- melt(minn, id.var=c('site','year'))
mey <- subset(me, variable=="yield")
mey <- mey[,c('site','year','value')]
names(mey) <- c('site','year','y')
mec <- subset(me, variable!="yield")
names(mec) <- c('site','year','covar','x')
mecy <- merge(mec, mey)
mecy$yr <- factor(mecy$year)
oldpar <- tpg <- trellis.par.get()
tpg$superpose.symbol$pch <- substring(levels(mecy$yr),4) # Last digit of year
trellis.par.set(tpg)
foo <- xyplot(y~x|covar*site, data=mecy, groups=yr, cex=1, ylim=c(5,65),
xlab="Weather covariate", ylab="Barley yield",
main="minnesota.barley",
panel=function(x,y,...) {
panel.lmline(x,y,..., col="gray")
panel.superpose(x,y,...)
},
scales=list(x=list(relation="free")))
foo <- useOuterStrips(foo, strip.left = strip.custom(par.strip.text=list(cex=.7)))
combineLimits(foo, margin.x=2L)
}
## ----crossa, eval=FALSE, message=FALSE--------------------------------------------------
# library(agridat)
# # Specify env.group as column in data frame
# data(crossa.wheat)
# dat2 <- crossa.wheat
# if(require("gge")){
# m4 <- gge(yield~gen*loc, dat2, env.group=locgroup, scale=FALSE)
# # plot(m4)
# biplot(m4, lab.env=TRUE, main="crossa.wheat")
# }
## ----nebr1, eval=TRUE-------------------------------------------------------------------
library(agridat)
data(nebraska.farmincome)
dat <- nebraska.farmincome
dat$stco <- paste0('nebraska,', dat$county)
dat <- transform(dat, crop=crop/1000, animal=animal/1000)
if(require("maps") & require("mapproj") & require("latticeExtra")){
# Raw, county-wide incomes. Note the outlier Cuming county
redblue <- colorRampPalette(c("firebrick", "lightgray", "#375997"))
mapplot(stco ~ crop + animal, data = dat,
scales = list(draw = FALSE),
main="nebraska.farmincome",
xlab="", ylab="Income ($1000) per county",
colramp=redblue,
map = map('county', 'nebraska', plot = FALSE, fill = TRUE,
projection = "mercator"))
}
## ----nebr2, eval=TRUE-------------------------------------------------------------------
# Now scale to income/mile^2
dat <- transform(dat, crop.rate=crop/area, animal.rate=animal/area)
# And use manual breakpoints.
if(require("maps") & require("mapproj") & require("latticeExtra")){
mapplot(stco ~ crop.rate + animal.rate, data = dat,
scales = list(draw = FALSE),
main="nebraska.farmincome",
xlab="", ylab="Income ($1000) per square mile (percentile breaks)",
map = map('county', 'nebraska', plot = FALSE, fill = TRUE,
projection = "mercator"),
colramp=redblue,
#breaks=quantile(c(dat$crop.rate, dat$animal.rate),
# c(0,.1,.2,.4,.6,.8,.9,1), na.rm=TRUE)
# To eliminate dependency on classInt package, hardcode the breakpoints
#breaks=classIntervals(na.omit(c(dat$crop.rate, dat$animal.rate)), n=7, style='fisher')$brks
breaks=c(0,.049, .108, .178, .230, .519, .958, 1.31)
)
}
## ----lasrosas, eval=TRUE, fig.height=7.5------------------------------------------------
library(agridat)
data(lasrosas.corn)
dat <- lasrosas.corn
# yield map
redblue <- colorRampPalette(c("firebrick", "lightgray", "#375997"))
if(require("latticeExtra")){
foo1 <- levelplot(yield ~ long*lat|factor(year), data=dat,
aspect=1, layout=c(2,1),
main="lasrosas.corn grain yield (qu/ha)", xlab="Longitude", ylab="Latitude",
scales=list(alternating=FALSE),
prepanel = prepanel.default.xyplot,
panel = panel.levelplot.points,
type = c("p", "g"), col.regions=redblue)
# Experiment design...shows problems in 2001
dat <- lasrosas.corn
xl <- range(dat$long)
yl <- range(dat$lat)
sseq=matrix(c(
35, 0.9, 0.5, # brown
35, 0.8, 0.6,
35, 0.7, 0.7,
35, 0.6, 0.8,
35, 0.5, .9,
35, 0.4, 1,
80, 0.9, 0.5, # green
80, 0.8, 0.6,
80, 0.7, 0.7,
80, 0.6, 0.8,
80, 0.5, 0.9,
80, 0.4, 1,
190, 0.9, 0.5, # blue
190, 0.8, 0.6,
190, 0.7, 0.7,
190, 0.6, 0.8,
190, 0.5, 0.9,
190, 0.4, 1
), ncol=3, byrow=TRUE)
sseq <- hsv(sseq[,1]/360, sseq[,2], sseq[,3])
dat$repnf <- factor(paste(dat$rep,dat$nf))
# levels(dat$repnf) # check the order
#dat <- transform(dat, col=as.character(sseq[as.numeric(factor(paste(dat$rep,dat$nf)))]))
# By default, manual specification of col/pch does not work with multiple panels.
# Define a custom panel function to make it work
mypanel <- function(x,y,...,subscripts,col,pch) {
panel.xyplot(x,y,col=col[subscripts],pch=pch[subscripts], ...)
}
foo2 <- xyplot(lat~long|factor(year), data=dat,
aspect=1, layout=c(2,1),
xlim=xl, ylim=yl, cex=0.9,
main="lasrosas.corn experiment design", xlab="", ylab="",
scales=list(alternating=FALSE),
col=sseq[dat$repnf],
#pch=levels(dat$topo)[dat$topo],
pch=c('-','+','/','\\')[dat$topo],
panel=mypanel)
plot(foo1, split = c(1, 1, 1, 2))
plot(foo2, split = c(1, 2, 1, 2), newpage = FALSE)
}
## ----nass, eval=TRUE, fig.height=8------------------------------------------------------
library(agridat)
data(nass.corn)
dat <- nass.corn
dat$acres <- dat$acres/1000000
# Use only states that grew at least 100K acres of corn in 2011
keep <- droplevels(subset(dat, year == 2011 & acres > .1))$state
dat <- subset(dat, state != "Delaware")
dat <- subset(dat, state != "Idaho")
dat <- subset(dat, state != "Washington")
dat <- subset(dat, state != "California")
dat <- droplevels(subset(dat, is.element(state, keep)))
# Acres of corn grown each year
require("lattice")
xyplot(acres ~ year|state, dat, type='l', as.table=TRUE,
layout=c(6,5),
strip=strip.custom(par.strip.text=list(cex=.5)),
main="nass.corn", xlab="Year", ylab="Million acres of corn")
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.