NOAA’s Annual Global Temperature Anomaly Trends

January 16, 2015
By

(This article was first published on Climate Charts & Graphs I » RClimate Script, and kindly contributed to R-bloggers)

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()

Filed under: Citizen Climate Science, Global Warming, RClimate Script, Time Series Charts Tagged: Climate Trends, R scripts

To leave a comment for the author, please follow the link and comment on their blog: Climate Charts & Graphs I » RClimate Script.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Sponsors

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)