A practical guide to ecological modelling – Chapter 2

## =============================================================================
## R-Code to make figure 2.20 from the book:
## K. Soetaert  and  P.M.J. Herman, 2009.  
## A practical guide to ecological modelling - 
## using R as a simulation platform. Springer, 372 pp. 
## http://www.springer.com/life+sciences/ecology/book/978-1-4020-8623-6 .
## implemented by Karline Soetaert
## =============================================================================

par(mar = c(1, 1, 1, 1))
names <- c("PHYTO", "DIN", "ZOO", "DETRITUS")

M <- matrix(nrow = 4, ncol = 4, byrow = TRUE, data = c(
#   p n z  d
    0,1,0, 0, #p
    0,0,4, 6, #n
    2,0,0, 0, #z
    0,0,5, 0  #d
    ))

pp <- plotmat(M, pos = c(1, 2, 1), curve = 0, name = names,
            lwd = 1, my = 0.0, cex.txt = 0.8, prefix = "f",
            box.lwd = 2, box.size = 0.08, box.type = "square",
            box.prop = 0.5, arr.type = "triangle", arr.pos = 0.6,
            shadow.size = 0.01, main = "NPZD")

# extra arrows: flow 5 to Detritus and flow 2 to detritus
phyto    <- pp$comp[names == "PHYTO"]
zoo      <- pp$comp[names == "ZOO"]
nh3      <- pp$comp[names == "DIN"]
detritus <- pp$comp[names == "DETRITUS"]

# flow2-> detritus
m2    <- 0.5*(zoo+phyto)
m1    <- detritus
m1[1] <- m1[1]+ pp$radii[3,1]*0.2
m1[2] <- m1[2] + pp$radii[3,2]
mid <- straightarrow (to = m1, from = m2, 
   arr.type = "triangle", arr.pos = 0.7, lwd = 1)
text(mid[1]-0.01, mid[2]+0.03, "f3", cex = 0.8)

# solar radiation
m1 <- 0.5*(nh3 + phyto)
m2 <- c(0.25, 0.8)
segments (m1[1], m1[2], m2[1], m2[2], lwd = 1, lty = 2)
text(m2[1]-0.01, m2[2]+0.03, "solar radiation", adj = c(0.5,0.5))

# chlorophyll
m1    <- phyto
m1[1] <- m1[1]+ pp$radii[1,1]
m2    <- m1
m2[1] <- m2[1]+0.25
segments (m1[1], m1[2], m2[1], m2[2], lwd = 1)
textellipse(m2, pp$radii[1,1], pp$radii[1,2], 
   lwd = 1, shadow.size = 0, lab = "Chlorophyll")

Go back