Category Archives: Global Warming

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.

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)

Latest NOAA Daily SST Anomaly

NOAA’s  latest Daily Sea Surface Temperature (SST)  Map. Link
                              Click image to see full size

Nino 3.4 Anomaly Continues to Increase

nino34

“The Niño3.4 SST anomaly index is an indicator of central tropical Pacific El Niño conditions. It is calculated with SSTs in the box 170°W – 120°W, 5°S – 5°N.”  NOAA -State of the Ocean Climate

Nino34

NOAA’s weekly data file since January, 1990 is here.

Nino3.4  continues to increase, indicating that we are heading for an El Nino event. The impact of an El Nino can be significant to global temperatures, 1998 for example.  It is to early to tell whether 2014 will see a significant El Nino like 1998 or just a minor event.