Climate Examples Using RClimate

Andy Long at Northern Kentucky University  has created a RClimate web page that provides numerous examples of climate data analysis using RWeb,  RClimate scripts and publicly available climate  data.

RClimate

NOAA’s Annual Global Temperature Anomaly Trends

Here is an alternative way using dygraphs (link)

NOAA has released their December, 2014 global anomaly data, allowing us to examine the 1880 – 2014 global temperature anomaly trend.

This R script trend charts shows the annual and average decadal temperature anomalies for the NOAA data series.

 

NOAA’s data, like NASA GISS’s and the Japan Meteorological Agency, show that the global mean annual temperature continues to rise.  2014 was the warmest year in the warmest decade for all 3 global temperature data series.

Here is my R script for those who would like to reproduce my chart:

 


############## RClimate Script: NOAA Annual Temperature Anomaly Trend     ##################
##   1/16/15     Retrieve daa from NOAA's and plot annual - decadal trends                ##
#############################################################################################
 library(plyr); library(reshape); library(RCurl)
 NOAA_ann_link <- "http://www.ncdc.noaa.gov/cag/time-series/global/globe/land_ocean/ytd/12/1880-2014.csv"
  n <- read.table(NOAA_ann_link, skip = 2, sep = ",", dec=".",
                 row.names = NULL, header = T,  as.is = T, colClasses = rep("numeric",2),
                 col.names = c("yr", "anom") )
## Find last report year and last anomaly value
  num_rows <- nrow(n)
  NOAA_last_yr <- as.integer(n[num_rows,1])
  NOAA_last_anom <- signif(n[nrow(n),2],2)
# Decade calculations
 dec_mean<- as.numeric(14)
 dec_st <- as.numeric(14)
 dec_end <- as.numeric(14)
 base_yr <- 1880
 n$dec_n <-  (as.numeric((n$yr - base_yr) %/% 10) * 10) + base_yr
# df <- data.frame(df, dec_n)
 for (i in 1:13) {dec_st[i] = base_yr+ i*10
                 dec_sub <- subset(n, dec_n == dec_st[i], na.rm=T)
                 dec_mean[i] <- mean(dec_sub$anom)
         }
 dec_st[14] <- 2020              # Need to have for last step line across decade
 dec_mean[14] <- dec_mean[13]
 dec<- data.frame(dec_st, dec_mean)
# Trend chart function
  plot_func<- function() {
   par(las=1); par(ps=12); par(oma=c(2.5,1,1,1)); par(mar=c(2.5,4,2,1))
   p_xmin <- 1880;   p_xmax <- n[num_rows,1]
   title <- paste("NOAA Land and Sea Temperature Annual Anomaly Trend \n", p_xmin, " to ", NOAA_last_yr, sep="")
   plot(n$yr, n$anom, type = "l", col = "grey",
     xlim = c(p_xmin, p_xmax), ylab = "Temperature Anomaly - \u00B0C (1951-1980 Baseline)",
     xlab="", main = title,cex.main = 0.85)
   points(NOAA_last_yr, NOAA_last_anom, col = "red", pch=19)
  last_pt <- paste( NOAA_last_yr, " @ ", NOAA_last_anom, " \u00B0C",sep="")
  points(dec$dec_st, dec$dec_mean, type="s", col="blue")
  ## add legend
  legend(1882,0.6, c("Decadal Avg Anomaly" ,"Annual anomaly", last_pt), col = c("blue", "grey", "red"),
       text.col = "black", lty = c(1,1,0),pch=c(0,0,16),pt.cex=c(0,0,1),
       merge = F, bg = "white", bty="o", cex = .75, box.col="white")
   out <- paste("NOAA Annual Temperature Anomaly \nData updated through: " , NOAA_last_yr, sep="")
   t_pos <- p_xmin + 0.5*(p_xmax-p_xmin)
  text(t_pos, -0.55, out, cex = 0.7, adj = 0)
  data_source <- paste("Data Source: ", NOAA_ann_link, sep="")
# Plot Annotation
 mtext(data_source,1,0, cex = 0.75, adj=0.5, outer=T)
 mtext("D Kelly O'Day - https://chartsgraphs.wordpress.com", 1,1, adj = 0, cex = 0.8, outer=TRUE)
 mtext(format(Sys.time(), "%m/%d/ %Y"), 1, 1, adj = 1, cex = 0.8, outer=TRUE)
  }
##########################################################################################
plot_func()

NASA GISS’s Annual Global Temperature Anomaly Trends

Update: Here is an alternative way to chart the same data (link).

NASA’s Goddard Institute for Space Studies (GISS)  has released their December, 2014 anomaly data, showing that 2014 was the warmest year in the warmest decade in the 1880 – 2014 instrumental temperature record period.

NASA’s results are consistent with the Japanese Meteorological Agency report (here)

 

Here is my R script for those who would like to reproduce my chart.

 

############## RClimate Script: GISS Annual Temperature Anomaly ###########################
##                   http:chartsgraphs.wordpress.com    1/16/15                            ##
############################################################################################
  library(plyr); library(reshape)
 ## File Download and File
  url <- c("http://data.giss.nasa.gov/gistemp/tabledata/GLB.Ts+dSST.txt")
  file <- c("GLB.Ts+dSST.txt")
  download.file(url, file)

## 1st 8 rows and the last 12 rows contain instructions
## Find out the number of rows in the file, and exclude the last 12
    rows <- length(readLines(file)) - 12
## Read file as  char vector, one line per row, Exclude first 8 rows
    lines <- readLines(file, n=rows)[8:rows]
## Data Manipulation, R vector
## Use regexp to replace all the occurences of **** with NA
    lines2 <- gsub("\\*{3,5}", " NA", lines, perl=TRUE)
## Convert the character vector to a dataframe
    df <- read.table(
      textConnection(lines2), header=TRUE, colClasses = "character")
    closeAllConnections()
## Select monthly data in first 13 columns
    df <- df[,c(1,14)]
## Convert all variables (columns) to numeric format
    df <- colwise(as.numeric) (df)
    df[,2] <- df[,2]/100
    names(df) <- c("Year", "anom")
## Remove rows where Year=NA from the dataframe
    df <- df [!is.na(df$Year),]
## Find last report month and last value
    GISS_last <- nrow(df)
    GISS_last_yr <- df$Year[GISS_last]
    GISS_last_temp <- df$anom[GISS_last]
## Calc decade averages
  dec_mean<- as.numeric(14)
  dec_st <- as.numeric(14)
  dec_end <- as.numeric(14)
 # yr_n <- as.integer(df$Year)
  base_yr <- 1870
  df$dec_n <-  (as.numeric((df$Year - base_yr) %/% 10) * 10) + base_yr
 # df <- data.frame(df, dec_n)
  for (i in 1:13) {dec_st[i] = base_yr+ i*10
     dec_sub <- subset(df, dec_n == dec_st[i], na.rm=T)
     dec_mean[i] <- mean(dec_sub$anom)
     }
 dec_st[14] <- 2020              # Need to have for last step line across decade
 dec_mean[14] <- dec_mean[13]
 dec<- data.frame(dec_st, dec_mean)
#### Plot function
  plot_func <- function() {
  par(las=1); par(ps=12)
  par(oma=c(2.5,1,1,1)); par(mar=c(2.5,4,2,1))
# specify plot yr min & max
  p_xmin <- 1880;   p_xmax <- GISS_last_yr+10
  title <- paste("GISS Land and Sea Temperature Annual Anomaly Trend \n", p_xmin, " to ",
   GISS_last_yr, sep="")
  plot(df[,1], df[,2], type = "l", col = "grey",
     xlim = c(p_xmin, p_xmax), ylab = "Temperature Anomaly - C (1951-1980 Baseline)",
     xlab="", main = title,cex.main = 1,cex.lab=0.8,cex.axis=0.85)
  points(GISS_last_yr, GISS_last_temp, col = "red", pch=19)
  last_pt <- paste( GISS_last_yr, ", ", GISS_last_yr, " @ ", GISS_last_temp, "C",sep="")
  points(dec$dec_st, dec$dec_mean, type="s", col="blue")
## add legend
  legend(1880,0.6, c("Decade Mean Anomaly", "Annual Anomaly" ,GISS_last_temp), col = c("blue", "grey", "red"),
       text.col = "black", lty = c(1,1,0),pch=c(0,0,16),pt.cex=c(0,0,1),
       merge = T, bg = "white", bty="o", cex = .75, box.col="white")

Annual Global Temperature Anomaly Update

The Japan meteorological Agency reports that 2014 was the hottest of all years in their 1890 – 2014 data series (link).

Annual Global Temperature Anomalies – C (1890 – 2014) Japan Meteorological Agency

Good News on the Renwable/ Solar Energy Front

Thanks to Tamino at Open Mind for posting about Yale Climate Forums video on the state of renewable energy.

Mauna Loa CO2 Concentration Exceeds 400 ppm in May, 2014

“The late renowned scientist, Charles David Keeling, , began keeping daily measurements of atmospheric carbon at Mauna Loa in 1958ma and his record is known as the “Keeling Curve”” – Daily KOS 

I have been tracking the Mauna Loa CO2 levels with this chart in this blog  sidebar for several years. The May, 2014 monthly CO2 level crossed the 400 ppm threshold for the first time at Mauna Loa since keeling started CO2 observations their in 1958,  so I decided to show CO trend in full size.

CO2_May_2014

NASA climate scientists quotes on crossing 400 ppm CO2 level (Link)

El Nino – Major Global Force

As a climate enthusiast, I am fascinated with El Nino – L Nina, how it works and its role on global weather patterns.  I will be collecting various web based images – charts on El Nino – La Nina that I find helpful in understanding this force of nature.  I’ll keep them on my new El Nino Basics page.

 

Animation of Walker circulation – Australian Bureau of Meteorology  (Link)

 

Nino 3.4 SST Anomaly  and Southern Oscillation Index (Link)

 

NOAA: ESRL – PSD Longitudinal SST Anomaly Since 1995 (Link)

Notice how -10S to 10N warmed and cooled since 1985, major warmup in 1998 El Nino.

 

 

 

 

Advance of Southwest Monsoon – India meteorological   Department (Link)