This is a file from the Wikimedia Commons

File:Mauna Loa CO2 monthly mean concentration.svg

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Original file(SVG file, nominally 708 × 708 pixels, file size: 401 KB)

Summary

Description
English: This figure shows the history of atmospheric carbon dioxide concentrations as directly measured at Mauna Loa, Hawaii since 1958. This curve is known as the Keeling curve, and is an essential piece of evidence of the man-made increases in greenhouse gases that are believed to be the cause of global warming. The longest such record exists at Mauna Loa, but these measurements have been independently confirmed at many other sites around the world [1].

The annual fluctuation in carbon dioxide is caused by seasonal variations in carbon dioxide uptake by land plants. Since many more forests are concentrated in the Northern Hemisphere, more carbon dioxide is removed from the atmosphere during Northern Hemisphere summer than Southern Hemisphere summer. This annual cycle is shown in the inset figure by taking the average concentration for each month across all measured years.

The red curve shows the average monthly concentrations, and blue curve is a smoothed trend.

The carbon dioxide data is measured as the mole fraction in dry air. This dataset constitutes the longest record of direct measurements of CO2 in the atmosphere (data up to december 2017).

Date
Source Own work. Data from Dr. Pieter Tans, NOAA/ESRL and Dr. Ralph Keeling, Scripps Institution of Oceanography.
Author Delorme
Other versions

[edit]

Object location19° 32′ 10.31″ N, 155° 34′ 36.84″ W Kartographer map based on OpenStreetMap.View this and other nearby images on: OpenStreetMap - Google Earthinfo

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons

attribution share alike

This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
  • share alike – If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

Data source license

“These data are made freely available to the public and the scientific community in the belief that their wide dissemination will lead to greater understanding and new scientific insights.”
—Pieter Tans, NOAA

Create this graph

R logo.svg
This chart was created with R:

R code

# Mauna Loa atmospheric CO2 change
# multi language plot for Wikipedia

# Required packages
library(tidyverse)
library(gridExtra)
library(scales)


# Translations ------------------------------------------------------------

language <- list(
  en_US = list(
    locale_lc_time = "en_US.UTF-8",
    title = expression(paste("Monthly mean ", CO[2], " concentration ")),
    caption = paste("Data : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) and\n Dr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Accessed ", Sys.Date()),
    x = "Year",
    y = expression(paste(CO[2], " fraction in dry air (", mu, "mol/mol)")),
    x2 = "Month",
    y2 = expression(atop(paste(CO[2], " fraction in dry air (", mu, "mol/mol)"), "Departure from yearly average")),
    title2 = "Seasonal variation"
  ),
  fr_FR = list(
    locale_lc_time = "fr_FR.UTF-8",
    title = expression(paste("Moyenne mensuelle de la concentration de ", CO[2])),
    caption = paste("données : Dr Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) et\n Dr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Accédé le", Sys.Date()),
    x = "année",
    y = expression(paste("fraction de ", CO[2], " dans l'air sec (", mu, "mol/mol)")),
    x2 = "mois",
    y2 = expression(atop(paste("fraction de ", CO[2], " dans l'air sec (", mu, "mol/mol)"), "en écart à la moyenne annuelle")),
    title2 = "Variation saisonnière"
  ),
  de_DE = list(
    locale_lc_time = "de_DE.UTF-8",
    title = expression(paste("Monatliche durchschnittliche ", CO[2], "-Konzentration")),
    caption = paste("Datei : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) und\nDr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Zugänglich am", Sys.Date()),
    x = "Jahr",
    y = expression(paste(CO[2], "-Anteil in trockener Luft (", mu, "mol/mol)")),
    x2 = "Monate",
    y2 = expression(atop(paste(CO[2], "-Anteil in trockener Luft (", mu, "mol/mol)"), "Abweichung vom Jahresmittel")),
    title2 = "Monatliche Variation"
  ),
  es_ES = list(
    locale_lc_time = "es_ES.UTF-8",
    title = expression(paste("Media mensual de la concentración de ", CO[2])),
    caption = paste("dato : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) y\nDr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Visitada", Sys.Date()),
    x = "Año",
    y = expression(paste("Fraccion de ", CO[2],  " en aire secco (", mu, "mol/mol)")),
    x2 = "Mes",
    y2 = expression(atop(paste("Fraccion de ", CO[2],  " en aire secco (", mu, "mol/mol)"), "Desviación de la media anual")),
    title2 = "Variación mensual"
  ),
  cs_CZ = list(
    locale_lc_time = "cs_CZ.UTF-8",
    title = expression(paste("Průměrné měsíční koncentrace oxidu uhličitého")),
    caption = paste("data : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) a\nDr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Přístupné", Sys.Date()),
    x = "rok",
    y = expression(paste("koncentrace ", CO[2], " v suchém vzduchu (", mu, "mol/mol)")),
    x2 = "měsíc",
    y2 = expression(atop(paste("koncentrace ", CO[2], " v suchém vzduchu (", mu, "mol/mol)"), "odchylka od ročního průměru")),
    title2 = "Měsíční změna (průměrná roční odchylka)"
  ),
  nn_NO = list(
    locale_lc_time = "nn_NO.UTF-8",
    title = expression(paste("Gjennomsnittlig månedlig ", CO[2], "-konsentrasjon")),
    caption = paste("data : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) og\nDr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Vist", Sys.Date()),
    x = "År",
    y = expression(paste(CO[2],"-andel i tørr luft (", mu, "mol/mol)")),
    x2 = "Måned",
    y2 = expression(atop(paste(CO[2],"-andel i tørr luft (", mu, "mol/mol)"),
                         "Avvik fra årlig gjennomsnitt")),
    title2 = "Årlig variasjon"
  )
)


# Data --------------------------------------------------------------------

co2ml <- read.table("ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_mm_mlo.txt", na.strings = c(-99.99, -1))
colnames(co2ml) <- c("year", "month", "decimal", "average", "interpolated", "trend", "ndays")


# Prepare inset plot (seasonal variation) --------------------------------

# calculate the yearly means
m <- co2ml %>% 
  group_by(year) %>% 
  summarise(year_mean = mean(interpolated, na.rm = TRUE))

# join the yearly means to the dataset to calculate the monthly deviations to the yearly mean
# and add a virtual date for a nice x scale
mco2ml <- co2ml %>% 
  left_join(m, by = "year") %>% 
  mutate(delta = interpolated - year_mean,
         vdate = as.Date(paste0("2015-", sprintf("%02d", month), "-01")))


# Generate the plot for each language -------------------------------------

for (l in names(language)) {
  message(l)
  current <- language[[l]]
  
  # format the date in local names
  Sys.setlocale("LC_TIME", current$locale_lc_time)
  
  # main plot
  p1 <- ggplot(co2ml, aes(decimal, interpolated)) + 	
    geom_line(color = "pink") +
    geom_point(color = "red", size = 0.6) +
    stat_smooth(span = 0.1) +
    labs(
      x = current$x,
      y = current$y,
      title = current$title,
      subtitle = paste("Mauna Loa", min(co2ml$year), "-", max(co2ml$year)),
      caption = current$caption) +
    theme_bw() +
    theme(plot.caption = element_text(size = 7))
  
  # inset plot
  p2 <- ggplot(mco2ml, aes(vdate, delta)) +
    geom_hline(yintercept = 0) +
    stat_smooth(span = 0.4, se = FALSE) +
    stat_summary(fun.data = "mean_cl_boot", colour = "red", size = 0.3) + 
    scale_x_date(labels = date_format("%b")) +
    labs(
      x = current$x2,
      y = current$y2,
      title = current$title2) +
    theme_bw()
  
  # merge the plots and export in SVG
  p1 + annotation_custom(grob = ggplotGrob(p2), xmin = 1957, xmax = 1991, ymin = 361, ymax = 412)
  ggsave(file = paste("co2_mauna_loa", l, Sys.Date(), "wp.svg", sep="_"), width = 20, height = 20, units = "cm", device = svg)
  
}  
}

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current08:57, 21 October 2018Thumbnail for version as of 08:57, 21 October 2018708 × 708 (401 KB)Delormedata up to 2018-10
13:49, 20 January 2018Thumbnail for version as of 13:49, 20 January 2018708 × 708 (376 KB)Delorme1958-2017 data
14:59, 8 October 2017Thumbnail for version as of 14:59, 8 October 2017708 × 708 (375 KB)Delormeupdate data
17:12, 11 January 2017Thumbnail for version as of 17:12, 11 January 2017512 × 512 (160 KB)DelormeTitle
17:03, 11 January 2017Thumbnail for version as of 17:03, 11 January 2017512 × 512 (161 KB)Delormeupdate with 2016 data
19:35, 5 January 2016Thumbnail for version as of 19:35, 5 January 2016708 × 708 (364 KB)Delormepoint size
19:10, 5 January 2016Thumbnail for version as of 19:10, 5 January 2016708 × 708 (364 KB)DelormeFull dataset up to 2015-12-31
12:23, 10 June 2015Thumbnail for version as of 12:23, 10 June 2015708 × 708 (285 KB)DelormeAdjusted smoothing
21:23, 31 May 2015Thumbnail for version as of 21:23, 31 May 2015720 × 720 (285 KB)DelormeCorrected month names
20:13, 31 May 2015Thumbnail for version as of 20:13, 31 May 20151,006 × 960 (285 KB)DelormeUser created page with UploadWizard

Global file usage

The following other wikis use this file:

View more global usage of this file.

Metadata