Plotting Notes for Adaptation Class

R
adaptation
ESS185
Author

James Holland Jones

Published

December 31, 2023

I will be teaching my class, Earth System Science 185: Adaptation, again this winter quarter. One of the stated learning outcomes for this class is to be able to “interpret complex scientific figures.” I show the class lots of figures and ask them in all of the problem sets and both exams to interpret scientific figures. These figures are usually theoretical, though they sometimes involve data. This is largely a theory class though, so lots of theoretical ecology, evolution, and complex systems.

To supplement lecture this year, I have assembled some notes on interpreting and rendering scientific figures. These notes are highly incomplete, but they represent a pretty good start. I have learned some hard-won tricks for making attractive and clear scientific figures in R and it seemed like a good idea to assemble them in one place. You can find these notes (which I hope to update as the quarter proceeds) here.

An example of the sort of scientific figure we work with is the Noy-Meir (1975) model for stability of grazing systems. The following figure represents the core idea of Noy-Meir’s model.

# Logistic Recruitment
logistic.recruit <- expression(r*N*(1 - (N/K)^theta))
no <- 1
r <- 0.45
K <- 100
theta <- 1
N <- seq(0,K,length=500)

# Holling Type II Functional Response
h2 <- expression(a*N/(b + a*x))
x <- N+1
a <- 0.7
b <- 3
plot(N,eval(logistic.recruit), type="l", yaxs="i", lwd=3, axes=FALSE, xlab="Relative Producer Density", ylab="Relative Productivity", ylim=c(0,15))
box()
lines(x, 6*eval(h2), lwd=2)
lines(x, 12*eval(h2), lwd=2)

points(c(8.702413, 36.521362, 57.497146, 85.464859), c(3.485678, 10.441517, 11.003335,  5.652690), col=c("red","red","green","green"), cex=2, pch=16)
arrows(36.521362-7.5, 10.441517+2, 36.521362-1, 10.441517+2, code=1, lwd=3, length=0.1, col=grey(0.75))
arrows(36.521362+1, 10.441517+2, 36.521362+7.5, 10.441517+2, code=2, lwd=3, length=0.1, col=grey(0.75))
#
arrows(57.497146-7.5, 10.441517+2, 57.497146-1, 10.441517+2, code=2, lwd=3, length=0.1, col=grey(0.75))
arrows(57.497146+1, 10.441517+2, 57.497146+7.5, 10.441517+2, code=1, lwd=3, length=0.1, col=grey(0.75))
text(c(59.13355, 86.65497), c(11.458140,  6.107494), c("F2", "F1"))

The primary producers have a logistic recruitment curve, while grazers follow a Holling Type II functional response. Points where these curves intersect represent equilibria of the system. The green points are stable, whereas the red points are unstable (stability indicated by the grey arrows above the curves). The two consumption curves represent potential slow-forcing of the system from population growth of the consumer. Population growth can easily lead to the loss of the stable equilibria of the system, leading to catastrophic collapse.

To be honest, I’m not sure if these notes will ever move beyond class notes. So far, I have four chapters:

  1. interpreting scientific figures
  2. drawing a rogues’ gallery of classic figures from theoretical ecology, behavioral ecology, economics, and complexity theory
  3. “actual graphs” (i.e., networks)
  4. numerically integrating (and plotting!) ODEs

These are my various non-standard uses for R graphics (i.e., as opposed to actually plotting data!).