ENSO

graphics
climate
エルニーニョ・南方振動
Author

榎本剛

Published

October 31, 2024

Historic Oceanic Niño Index and Niño 3.4 DataのData file with monthly & seasonal values since 1854をクリックしてNINO34のSSTデータを取得。 year.endは適宜編集する。

# https://bmcnoldy.rsmas.miami.edu/tropics/oni/ONI_NINO34_1854-2022.txt
dom <- "NINO34"
year.start <- 1854
year.end <- 2024
fname <- paste0("ONI_", dom, "_", year.start, "-", year.end, ".txt")
enso <- read.table(fname, header = TRUE, skip = 9)
enso$yearmon <- as.Date(paste0(enso$YEAR, "-", enso$MON.MMM, "-15"))
enso[enso==-99.99] = NA

±0.5°Cの期間に陰影をつけ、10年毎にラベルをつけ、2年毎に目盛を打つ。

plot.sst <- function(yearmon, sst.anom){
  plot(yearmon, sst.anom, xaxt="n",
    type="l", xlab = "time",  ylab="°C",
    ylim=c(-3, 3))
  axis(1, at=pretty(yearmon, 10), labels=format(pretty(yearmon, 10), "%Y"))
  axis(1, at=pretty(yearmon, 40), labels = FALSE, tck = -0.02)
  axis(3, at=pretty(yearmon, 40), labels = FALSE, tck = -0.02)
  axis(4)
  polygon(c(yearmon, rev(yearmon)),
          c(ifelse(sst.anom < 0.5, 0.5, sst.anom),
            rep(0.5, length(sst.anom))), col="pink", border = FALSE)
  polygon(c(yearmon, rev(yearmon)),
          c(ifelse(sst.anom > -0.5, -0.5, sst.anom),
            rep(-0.5, length(sst.anom))), col="lightblue", border = FALSE)
  abline(h = -2, col = "lightblue", lty=2, lwd=2)
  abline(h = -1, col = "lightblue", lty=2, lwd=1.5)
  abline(h = -0.5, col = "lightblue", lty=2, lwd=1)
  abline(h =  0.5, col = "pink", lty=2, lwd=1)
  abline(h =  1, col = "pink", lty=2, lwd=1.5)
  abline(h =  2, col = "pink", lty=2, lwd=2)
}

2段に分けてプロットする。

par(mfrow=c(2, 1), mar=c(3, 3, 1, 1))
period <- enso$yearmon >= as.Date("1871-01-01") & enso$yearmon < as.Date("1950-01-01")
yearmon <- enso$yearmon[period]
sst.anom <- enso$NINO34_ANOM[period]
plot.sst(yearmon, sst.anom)
title(paste(dom, "SST anomaly"))
period <- enso$yearmon > as.Date("1950-01-01") & !is.na(enso$NINO34_ANOM)
yearmon <- enso$yearmon[period]
sst.anom <- enso$NINO34_ANOM[period]
plot.sst(yearmon, sst.anom)