Tag Archives: Climate Trends

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)

Latest NOAA Daily SST Anomaly

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

El Nino Forecast for Summer 2014 Looking Stronger

WSI Blog has a post by Dr. Todd Crawford that forecasts a strong El Nino later this summer. Based on analogs, he anticipates that it could be comparable to the mega El Ninos of 1997-98.

elnino

 

The 1997-98 El Nino event had a major impact on global temperature anomaly trends.  A major 2014-2015 El Nino could provide strong evidence in the “gloabal warming stopped in 1998″  debate.

 

Arctic Amplification – November, 2013: Updated 12/20/13

Updated (bold italic) 12/20/13 to reflect comments from David. 

NASA’s GISS temperature anomaly map (link) for November, 2013 is reproduced  below. It uses a 2×2 degree grid cell for the globe. 

GISS_anom_map_11_13

The November, 2013 GISS temperature anomaly shows the critical global pattern that is important to recognize because it is fundamental to understanding why global warming is so dangerous.

First, the overall global anomaly for November, 2013 was 0.77 degrees C.  The 2 degree latitude zone mean anomaly varied from a low of 0.068 to a high of 2.33. So the mean global anomaly does not tell the full story, we need to look at the geographical distribution to really understand the global warming pattern.

As we examine the geographical distribution of the November, 2013 anomalies, we see that they tend to increase as we move from the equator toward the poles.  This pattern,  called polar amplification, means that the polar regions, particularly the Arctic region, warms much more rapidly than the overall global mean.

I developed this chart in R to display the mean zonal anomalies by 2 degree latitude zones to help me visualize the November, 2013 anomaly patterns.

art_amp

Here is the R Script that I used to produce the chart.
#### GISS Temperature Anomaly - Zonal mean by 2 degree latitude
##K O'Day, Dec. 18, 2013
##############################################################################################################################
 link <- c("http://data.giss.nasa.gov/tmp/gistemp/NMAPS/tmp_GHCN_GISS_ERSST_1200km_Anom11_2013_2013_1951_1980/nmaps_zonal.txt")
 mon <- "November, 2013"
 title <- paste("Mean Temperature Anomaly by 2 Degree Latitude Zones\n", mon, sep="" )
 note_1 <- "GISS Temperature Anomaly\n (1951-1980 base period)"
 df <- read.table(link, skip=4)
 par(las=1, oma=c(3,1,1,1), mar=c(5,5,3,1), ps=11)
 names(df)<- c("Zone", "Anom")
 #png(file="C://R_Home//Charts & Graphs Blog//RClimateTools//a_Revised_Blog//art_amp.png", bg="white")

 plot(df$Anom, df$Zone, xlim=c(0,3), ylim=c(-90,90), type="l", axes=F, xlab="Mean Anomaly for Zone - C",
      ylab = "Latitude",  xaxs="i", yaxs = "i", main=title)
   axis(1, at=NULL)
   axis(2, at=c(-90,-60,-30,0,30,60,90))
   abline(h=40, col="green")
   abline(h=0, col="darkgrey")
   abline(v=0.77,col = "black" )
   abline(h=64, col="blue")
   text(2.5, 43.5, "Philadelphia, Pa.", cex=0.7)
   text(2.7, 67, "Reykjavík, Iceland", cex=0.7)
   text(2.25, -20, note_1, cex=0.75, adj=0)
   rect(0.6,-65,0.85 , -50, col = "white", border = "white")
   text(0.77, -60, "Global Mean @ \n0.77 C", cex=0.7)
 mtext("D Kelly O'Day - http://chartsgraphs.wordpress.com", 1,1, adj = 0, cex = 0.8, outer=T)
 mtext(format(Sys.time(), "%m/%d/ %Y"), 1, 1, adj = 1, cex = 0.8, outer=T)
# dev.off()

Animated Images of Arctic Sea Ice Extent Decline

This post shows how to download and animate a series of Arctic Sea Ice Extent images using R and the animation package.

Continue reading

R Script to Build Animation of Arctic Sea Ice Extent – Update 12/20/13

In my previous post I showed an animation of Arctic Sea Ice Extent from the 1980’s through August, 2012 (link).  In this post, I show how to build this Arctic Sea ice Extent  animated chart.

Source Data

The Arctic Ice Sea Monitor (link)   updates their daily csv file with the latest satellite based arctic sea ice measurements.  Here is the daily csv file link.

R script

To develop my animation of the daily Arctic Sea Ice extent, I decided to produce a plot for each year that showed the current year in red and the previous years in grey.  I go this idea from Tamino at Open Mind.

Here is my R script:
Be sure to set your working directory to appropriate location!!

library(animation)
  ani.options(convert=shQuote('C:\\Program Files (x86)\\ImageMagick-6.7.9-Q16\\convert.exe'))
## Use setwd() to specify directory where you want png images to be saved
  setwd("<strong>C:\\R_Home\\Charts & Graphs Blog\\RClimateTools\\Arctic_sea-ice_extent</strong><em>")
# use png_yn to toggle between plot output to png file or screen
  png_yn <- "y"
# Establish chart series patterns and colors to be able to distinguish current yr from previous years in plot
  pattern <- c(rep("dashed", 5), rep("solid", 12))
  ser_col <- c(rep("black",5),rep("grey",12))
# Establish chart annotations for date, chart title,
  what_date <- format(Sys.Date(), "%b %d, %Y")  # with month as a word
  title <- paste("IARC-JAXA Daily Arctic Sea Ice Extent*\n", what_date)
  note_1 <- "*Extent - Area of Ocean with at least 15% Sea Ice"
  par(oma=c(2,1,1,1)); par(mar=c(2,4,2,1))
#  Day of year axis setup
## Set up basic day of year vectors (mon_names, 1st day of mon)
  mon_names <- c("Jan", "Feb", "Mar", "April", "May", "June", "July", "Aug", "Sept", "Oct","Nov","Dec")
  mon_doy <- c(1,32,60,91,121,151,182,213,244,274,305,335,366)
  mon_pos <- c(16, 46, 75, 106,135, 165, 200, 228, 255, 289, 320, 355)
# Read JAXA Arctic Sea ice Extent csv file
# Data File: Month,Day,1980's Avg,1990's Avg,2000's Average,2002:2012
  link <- "http://www.ijis.iarc.uaf.edu/seaice/extent/plot.csv"
  j_data <- read.csv(link, header = F, skip=1, na.strings = c(-9999))
 series_id <-  c("mo", "day", "1980s", "1990s", "2000s","2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009",
                "2010", "2011", "2012", "2013")
 colnames(j_data) <- series_id
# File has data for each day in 366 day year
# Establish Day of year
  for (i in 1:366)   j_data$yr_frac[i] <- i
    #convert ASIE to millions Km^2
   j_data[,c(3:17)] <- j_data[,c(3:17)]/1000000
# Loop through years
   for (j in 3:17)
  {
     png_name <- paste("asie",series_id[j],".png",sep="")
      if (png_yn =="y") png(filename=png_name)
      which_yr <- j
      no_yrs <- j
  # Calc min asie for year
    min_asie <- min(j_data[,j], na.rm = T)  # must remove na's to get valid answer
    lab_asie <- round(min_asie,3)
    min_r <- which(j_data[,j] == min_asie)
    min_d <- j_data[min_r,2]
    min_m <- j_data[min_r,1]
    min_date <- paste(min_m,"/",min_d,"/",series_id[j], sep="")
    plot(j_data[,17],  type="n", col = "grey",axes=F, xlab="",
       ylab="Arctic Sea Ice Extent - Millions Sq KM",
       ylim=c(0,15),xaxs="i", yaxs = "i",
       main=title)
    text(20, 1.5, note_1, cex = 0.8, adj=0, col = "black")
    text(20,1,"Data Source: http://www.ijis.iarc.uaf.edu/seaice/extent/plot.csv", cex = 0.8, adj=0,col = "black")
    mtext("D Kelly O'Day - http://chartsgraphs.wordpress.com", 1,0.5, adj = 0, cex = 0.8, outer=T)
  # custom x & y axes
    axis(side = 1, at=mon_doy, labels=F, xaxs="i")
    axis(side=1, at= mon_pos, labels=mon_names, tick=F, line=F, xaxs="i")
    axis(side=2,  yaxs="i", las=1)
    points(70, min_asie, col = "red",pch=19, cex = 2)
  # Add each previous yr data series as light grey line
  for (n in 3:no_yrs)
  {
    points(j_data[,18], j_data[,n], type="l",lwd=1,lty=pattern[j], col=ser_col[j])
    text(182,14,series_id[j], col = "red", cex = 1.1)
  }
  points(j_data[,18], j_data[,j], col="red", type="l",lwd=2.5)
  text(182,14,series_id[j], col = "red", cex = 1.1)
  text(120,min_asie+0.5, min_date, col="red", cex=0.9)
  text(120,min_asie, lab_asie, col="red", cex=0.9)
  if(png_yn == "y") dev.off()
}
## copy last png file 3 times to provide pause in animation
if(png_yn== "y")
{
  for (c in 1:2)
  {
    file_name <- paste("asie2012",c, ".png",sep="")
    file.copy(from= "asie2012.png", to = file_name, overwrite=T)
  }
  ani.options(outdir = getwd())    # direct gif output file to working dir
  ani.options(interval= 0.80)
  im.convert("asie*.png", "last_animation.gif")
}

Global Sea Level Rise and El Nino – La Nina

Here is an informative interview with NASA’s Josh Willis about global sea level rise and El Nino – La Nina.  I first saw the video on Zeke Hausfather’s  YALE Forum on CLIMATE CHANGE & THE MEDIA

Comparison of UAH and RSS Time Series with Common Baseline

In this post I set both UAH 5.4 and RSS 3.3 global temperature anomaly series to a common baseline period (1981-2010)  to compare them. Since both the UAH 5.4 and RSS 3.3 series are satellite based , they exhibit striking similarities.

Common Baseline

In this previous post, I showed how to convert temperature anomaly time series from one baseline period to another period.  I then used this technique in this post to directly compare UAH 5.4 (baseline 1981-2010) and GISS.

In this post, I compare the satellite based UAH 5.4 (baseline 1981-2010) and RSS 3.3 (baseline 1979-1998) series.

The offsets are as follows:

  • UAH:  -0.000978
  • RSS:      0.098772

Since the UAH TLT 5.4 series is based on a 1981-2010 baseline, the offset is nearly zero (-0.00098 versus 0.0). The RSS offset changes the baseline from 1979-1998 to 1981-2010.

Users can reproduce my analysis on their own by downloading my CTS.csv file and applying the offsets to the UAH and RSS series.

Comparison of 1981-2010 Baseline Series

Here is a plot of UAH and RSS 12 month moving averages for 1979 to current: Click to Enlarge

Continue reading

Comparison of UAH and GISS Time Series with Common Baseline

In this post I set both UAH and GISS global temperature anomaly series to a common baseline period (1981-2010)  and compare them. Even though the UAH series is satellite based and GISS series is station based, the series exhibit striking similarities.

Common Baseline

In this previous post, I showed how to convert temperature anomaly time series from one baseline period to another period.  I use this technique in this post to directly compare UAH (baseline 1981-2010) and GISS (baseline 1951-1980) series.

The offsets are as follows:

  • UAH:  -0.000978
  • GISS: 0.34958

Since the UAH TLT 5.4 series is based on a 1981-2010 baseline, the offset is nearly zero (-0.00098 versus 0.0).

Users can reproduce my analysis on their own by downloading my CTS.csv file and applying the offsets to the UAH and GISS series.

Comparison of 1981-2010 Baseline Series

Here is a plot of UAH and GISS 12 month moving averages for 1979 to current: Click to Enlarge Continue reading