Arctic sea ice extent

Bit of a departure from Scottish snow this afternoon: the Met Office put out a blog post yesterday on the minimum Arctic sea ice extent being reached for this year (probably) and briefly discuss the impact on UK weather. I like the stacked curves that show the fall and rise of sea ice through the year (see MO blog), but feel they only tell part of the story and more importantly push the viewer to draw potentially inappropriate conclusions.

These seeds were first sown in my head by Simon Tett who can often be heard saying: ‘there is too much focus on noise’, i.e. we’re looking at individual data points and missing trends. With this in mind I’ve downloaded the monthly sea ice extent data from NSIDC and plotted the values by month. Over nearly all months we can see a marked decrease in sea ice through time. What should be noted is that these values are for area covered by sea ice, not the thickness. The code for the plot is below. Note, I’ve now added data for the Antarctic (2017-03-06)!

The code to make the plot is below (apologies for the wack formatting by wordpress). It includes downloading files, cleaning data and making a png file of the plot.

# ----------------------------------------------
# Setup
library(ggplot2)

# ----------------------------------------------
# Download Arctic sea ice extent

d = data.frame(m=1:12, h=rep(c("north", "south"), each=12))

lapply(1:nrow(d), function(i){
if (d$m[i] < 10){
j = paste0("0", d$m[i])
} else {
j = d$m[i]
}
n = paste0(toupper(substr(d$h[i], 1, 1)), "_")
download.file(paste0("ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/",
d$h[i],
"/monthly/data/",
n,
j,
"_extent_v2.1.csv"),
paste0("~/", n, j, "_extent_v2.csv"))
})

# ----------------------------------------------
# Read and clean data

# Read data
f = list.files("~", pattern="csv", full.names=T)
ice = lapply(f, function(i){
# read file
x = read.table(i,
sep=",",
na.strings="-9999",
header=T,
stringsAsFactors=F,
strip.white=T)
if (x$region[1]=="N"){
x$hem = "Northern hemisphere"
} else {
x$hem = "Southern hemisphere"
}
x
})

# Lists to df
ice = do.call("rbind.data.frame", ice)

# Clean months and numeric fields
ice$mo = as.numeric(ice$mo)
ice$mo = factor(ice$mo, labels=month.abb)
ice$year = as.numeric(ice$year)
ice$extent = as.numeric(ice$extent)

# ----------------------------------------------
# Plot Arctic sea ice extent by month

# Set text size
s = 14
# Write to png
png("~/N_Monthly_seaice.png", height=1200, width=500)
# faceted scatter plots
ggplot(ice[ice$region=="N", ], aes(x=year, y=extent)) +
geom_point(shape=1) +
facet_grid(mo ~ ., scales="free_y") +
geom_smooth() +
labs(title="Northern Hemisphere",
y="Sea ice extent (millions square km)",
x="Year") +
theme(title=element_text(size = s),
strip.text=element_text(size=s),
axis.text=element_text(size=s))
dev.off()

png("~/S_Monthly_seaice.png", height=1200, width=500)
# faceted scatter plots
ggplot(ice[ice$region=="S", ], aes(x=year, y=extent)) +
geom_point(shape=1) +
facet_grid(mo ~ ., scales="free_y") +
geom_smooth() +
labs(title="Southern Hemisphere",
y="Sea ice extent (millions square km)",
x="Year") +
theme(title=element_text(size = s),
strip.text=element_text(size=s),
axis.text=element_text(size=s))
dev.off()
Advertisements