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: 420 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 2018).
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: OpenStreetMapinfo

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 give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.

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, in: 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
# using different possible source (Scripps if NOAA is not available)

# Required packages.   used for :
library(tidyverse)   # data processing
library(gridExtra)   # plot positionning
library(scales)      # pretty breaks on plot axis
library(lubridate)   # date processing
library(httr)        # check url

# install locale beforehand
# sudo locale-gen ca_ES.UTF-8

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

language <- list(
  
  ca_ES = list(
    locale_lc_time = "ca_ES.UTF-8",
    title = bquote("Mitjana mensual de la concentratió de"~CO[2]),
    subtitle = "Mauna Loa",
    caption_scripps = paste("Data : R. F. Keeling, S. J. Walker, S. C. Piper and A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Visitada", Sys.Date()),
    caption_noaa = paste("dades : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) i\n Dr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Visitada ", Sys.Date()),
    x = "any",
    y = bquote("fracció de"~CO[2]~"en aire sec ("*mu*"mol/mol)"),
    x2 = "mes",
    y2 = bquote(atop("fracció de"~CO[2]~"en aire sec ("*mu*"mol/mol)",
                     "desviació de la mitjana anual")),
    title2 = "Variació mensual"
  ),
  
  cs_CZ = list(
    locale_lc_time = "cs_CZ.UTF-8",
    title = "Průměrné měsíční koncentrace oxidu uhličitého",
    subtitle = "Mauna Loa",
    caption_scripps = paste("data : R. F. Keeling, S. J. Walker, S. C. Piper a A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Přístupné", Sys.Date()),
    caption_noaa = 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 = bquote("koncentrace"~CO[2]~"v suchém vzduchu ("*mu*"mol/mol)"),
    x2 = "měsíc",
    y2 = bquote(atop("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)"
  ),
  
  de_DE = list(
    locale_lc_time = "de_DE.UTF-8",
    title = bquote("Monatliche durchschnittliche"~CO[2]*"-Konzentration"),
    subtitle = "Mauna Loa",
    caption_scripps = paste("Datei : R. F. Keeling, S. J. Walker, S. C. Piper und A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Zugänglich am", Sys.Date()),
    caption_noaa = 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 = bquote(CO[2]*"-Anteil in trockener Luft ("*mu*"mol/mol)"),
    x2 = "Monate",
    y2 = bquote(atop(CO[2]*"-Anteil in trockener Luft ("*mu*"mol/mol)", "Abweichung vom Jahresmittel")),
    title2 = "Monatliche Variation"
  ),  
  
  en_US = list(
    locale_lc_time = "en_US.UTF-8",
    title = bquote("Monthly mean"~CO[2]~"concentration"),
    subtitle = "Mauna Loa",
    caption_scripps = paste("Data : R. F. Keeling, S. J. Walker, S. C. Piper and A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Accessed", Sys.Date()),
    caption_noaa = 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 = bquote(CO[2]~"fraction in dry air ("*mu*"mol/mol)"),
    x2 = "Month",
    y2 = bquote(atop(CO[2]~"fraction in dry air ("*mu*"mol/mol)", "Departure from yearly average")),
    title2 = "Seasonal variation"
  ),
  
  es_ES = list(
    locale_lc_time = "es_ES.UTF-8",
    title = bquote("Media mensual de la concentración de"~CO[2]),
    subtitle = "Mauna Loa",
    caption_scripps = paste("dato : R. F. Keeling, S. J. Walker, S. C. Piper y A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Visitada", Sys.Date()),
    caption_noaa = 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 = bquote("Fraccion de"~CO[2]~"en aire secco ("*mu*"mol/mol)"),
    x2 = "Mes",
    y2 = bquote(atop("Fraccion de"~CO[2]~"en aire secco ("*mu*"mol/mol)", "Desviación de la media anual")),
    title2 = "Variación mensual"
  ),  
  
  fr_FR = list(
    locale_lc_time = "fr_FR.UTF-8",
    title = bquote("Moyenne mensuelle de la concentration de"~CO[2]),
    subtitle = "Mauna Loa",
    caption_scripps = paste("données : R. F. Keeling, S. J. Walker, S. C. Piper et A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Accédé le", Sys.Date()),
    caption_noaa = 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 = bquote("fraction de"~CO[2]~"dans l'air sec ("*mu*"mol/mol)"),
    x2 = "mois",
    y2 = bquote(atop("fraction de"~CO[2]~"dans l'air sec ("*mu*"mol/mol)", "en écart à la moyenne annuelle")),
    title2 = "Variation saisonnière"
  ),
  
  nn_NO = list(
    locale_lc_time = "nn_NO.UTF-8",
    title = bquote("Gjennomsnittlig månedlig"~CO[2]*"-konsentrasjon"),
    subtitle = "Mauna Loa",
    caption_scripps = paste("data : R. F. Keeling, S. J. Walker, S. C. Piper og A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Vist", Sys.Date()),
    caption_noaa = 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 = bquote(CO[2]*"-andel i tørr luft ("*mu*"mol/mol)"),
    x2 = "Måned",
    y2 = bquote(atop(CO[2]*"-andel i tørr luft ("*mu*"mol/mol)",
                     "Avvik fra årlig gjennomsnitt")),
    title2 = "Årlig variasjon"
  ),
  
  pl_PL = list(
    locale_lc_time = "pl_PL.UTF-8",
    title = bquote("Średnie miesięczne stężenie"~CO[2]),
    subtitle = "Mauna Loa",
    caption_scripps = paste("Dane : R. F. Keeling, S. J. Walker, S. C. Piper i A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). Dostęp na", Sys.Date()),
    caption_noaa = paste("Dane : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) i\nDr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). Dostęp na", Sys.Date()),
    x = "Rok",
    y = bquote("Frakcja"~CO[2]~"w suchym powietrzu ("*mu*"mol/mol)"),
    x2 = "Miesiąc",
    y2 = bquote(atop("Frakcja"~CO[2]~"w suchym powietrzu ("*mu*"mol/mol)", "Odejście od średniej rocznej")),
    title2 = "Wahania sezonowe"
  ),
  
  ru_RU = list(
    locale_lc_time = "ru_RU.UTF-8",
    title = bquote("Среднемесячная и среднегодовая концентрация"~CO[2]),
    subtitle = "Мауна Лоа, Гаваи",
    caption_scripps = paste("данные : R. F. Keeling, S. J. Walker, S. C. Piper и A. F. Bollenbacher\nScripps CO2 Program (http://scrippsco2.ucsd.edu). доступ на", Sys.Date()),
    caption_noaa = paste("данные : Dr. Pieter Tans, NOAA/ESRL (www.esrl.noaa.gov/gmd/ccgg/trends/) и\nDr. Ralph Keeling, Scripps Institution of Oceanography (scrippsco2.ucsd.edu/). доступ на ", Sys.Date()),
    x = "Годы",
    y = bquote("Доля"~CO[2]~"в сухом воздухе ("*mu*"mol/mol)"),
    x2 = "Месяцы",
    y2 = bquote(atop("Доля"~CO[2]~"в сухом воздухе ("*mu*"mol/mol)", "Отправление от среднегодовой")),
    title2 = "Сезонные отклонения от среднегодовой"
  )
  
)


# Data --------------------------------------------------------------------
# First try NOAA data, if not availble use Scripps data

if (!http_error("ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_mm_mlo.txt")) {
  # https://www.esrl.noaa.gov/gmd/ccgg/trends/data.html
  source <- "noaa"
  co2ml <- read_table2(
      "ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_mm_mlo.txt",
      col_names = c("year", "month", "decimal", "average", "deseason", "ndays", "stddays", "unc"),
      col_types = "iidddidd",
      na = c("-99.99", "-1"),
      comment = "#") %>% 
    group_by(year) %>% 
    mutate(year_mean = mean(average, na.rm = TRUE),
           delta = average - year_mean,
           vdate = ymd(paste0("2015-", month, "-01")))%>% 
    rename(co2 = average)

} else {
  # http://scrippsco2.ucsd.edu/data/atmospheric_co2/primary_mlo_co2_record
  # used during US gov shutdown
  source <- "scripps"
  co2ml <- read_csv(
      "http://scrippsco2.ucsd.edu/assets/data/atmospheric/stations/in_situ_co2/monthly/monthly_in_situ_co2_mlo.csv",
      col_names = c("year", "month", "xls_date", "decimal",
                    "co2", "co2_seas_adj", "fit", "fit_seas_adj",
                    "co2_filled", "co2_filled_seas_adj"),
      col_types = "iiiddddddd",
      skip = 57,
      na = "-99.99",
      comment = "\"") %>% 
    group_by(year) %>% 
    mutate(year_mean = mean(co2_filled, na.rm = TRUE),
           delta = co2_filled - year_mean,
           vdate = ymd(paste0("2015-", month, "-01"))) %>% 
    rename(co2 = co2_filled)
}


# 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, co2)) + 	
    geom_line(color = "pink") +
    geom_point(color = "red", size = 0.6) +
    stat_smooth(span = 0.1) +
    scale_x_continuous(breaks = pretty_breaks()) +
    scale_y_continuous(breaks = pretty_breaks()) +
    labs(
      x = current$x,
      y = current$y,
      title = current$title,
      subtitle = paste(current$subtitle, min(co2ml$year), "-", max(co2ml$year)),
      caption = current[[paste0("caption_", source)]]) +
    theme_bw() +
    theme(plot.caption = element_text(size = 7))
  
  # inset plot
  p2 <- ggplot(co2ml, 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(breaks = pretty_breaks(4), 
                 minor_breaks = pretty_breaks(12), 
                 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)
}

Captions

Atmospheric carbon dioxide concentrations at Mauna Loa, Hawaii since 1958 (plot in English)

Items portrayed in this file

depicts

6 January 2019

19°32'10.309"N, 155°34'36.840"W

File history

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

(newest | oldest) View (newer 10 | ) (10 | 20 | 50 | 100 | 250 | 500)
Date/TimeThumbnailDimensionsUserComment
current17:52, 31 October 2020Thumbnail for version as of 17:52, 31 October 2020708 × 708 (420 KB)Oeneisupdate data 2020-10-31
14:40, 20 July 2019Thumbnail for version as of 14:40, 20 July 2019708 × 708 (409 KB)Oeneisdata up to 2019-06
11:01, 6 January 2019Thumbnail for version as of 11:01, 6 January 2019708 × 708 (407 KB)Oeneisfull 2018 year data ; data from Scripps due to US gov shutdown
08:57, 21 October 2018Thumbnail for version as of 08:57, 21 October 2018708 × 708 (401 KB)Oeneisdata up to 2018-10
13:49, 20 January 2018Thumbnail for version as of 13:49, 20 January 2018708 × 708 (376 KB)Oeneis1958-2017 data
14:59, 8 October 2017Thumbnail for version as of 14:59, 8 October 2017708 × 708 (375 KB)Oeneisupdate data
17:12, 11 January 2017Thumbnail for version as of 17:12, 11 January 2017512 × 512 (160 KB)OeneisTitle
17:03, 11 January 2017Thumbnail for version as of 17:03, 11 January 2017512 × 512 (161 KB)Oeneisupdate with 2016 data
19:35, 5 January 2016Thumbnail for version as of 19:35, 5 January 2016708 × 708 (364 KB)Oeneispoint size
19:10, 5 January 2016Thumbnail for version as of 19:10, 5 January 2016708 × 708 (364 KB)OeneisFull dataset up to 2015-12-31
(newest | oldest) View (newer 10 | ) (10 | 20 | 50 | 100 | 250 | 500)

Global file usage

The following other wikis use this file:

View more global usage of this file.

Metadata