File:Temp-sunspot-co2.svg

原始文件 (SVG文件,尺寸为720 × 540像素,文件大小:98 KB)


摘要

描述
English: Global average temperature, atmospheric CO2, and sunspot activity since 1850. Thick lines for temperature and sunspots represent a 25 year LOWESS and moving average smoothing of the raw data.
日期 2009年1月11日 (原始上传日期)
来源 Transferred from en.wikipedia to Commons by Anrie using CommonsHelper.
作者 英语维基百科Leland McInnes
其他版本
SVG开发
InfoField
 
SVG的源代码为无效代码,因为发现了1个问题。
 
本W3C无效的矢量图使用Matplotlib创作。
#(light blue) Law Dome CO2 Data: ftp://ftp.ncdc.noaa.gov/pub/data/paleo/icecore/antarctica/law/law_co2.txt
  1. (blue) Mauna Loa CO2 data: ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_mm_mlo.txt
  2. (red) Temperature Data: http://www.cru.uea.ac.uk/cru/data/temperature/hadcrut3gl.txt, http://woodfortrees.org/data/hadcrut4gl/mean:12
  3. (orange) Sunspot data: http://sidc.oma.be/DATA/yearssn.dat, http://www.sidc.be/silso/DATA/SN_y_tot_V2.0.txt

Global average temperature, atmospheric CO2, and sunspot activity since 1850. Thick lines for temperature and sunspots represent a 25 year moving average smoothing of the raw data.

This figure was produced by Leland McInnes using python and matplotlib and is licensed under the GFDL. All data is from publicly available sources.


The plot can likely be updated for more recent data using these same script, though minor modifications may be required for changes in data formats, locations, etc.

This file may be updated to reflect new information.
If you wish to use a specific version of the file without it being overwritten, please upload the required version as a separate file.
原始码
InfoField

Python code

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pylab as plt
import matplotlib.ticker as ticker
import urllib3
import ftplib
import shutil

plt.rcdefaults()
plt.style.use('classic')

def saveurl(url, fname):
    if url.startswith("ftp"):
        ftp = ftplib.FTP('/'.join(url.split('/')[2:3]))
        ftp.login('', '')
        with open(fname, 'wb') as f:
            res = ftp.retrbinary('RETR %s' % '/'.join(url.split('/')[3:]), f.write)
    else:
        c = urllib3.PoolManager()
        with c.request('GET', url, preload_content=False) as resp, open(fname, 'wb') as out_file:
            shutil.copyfileobj(resp, out_file)
    print('saved', fname, 'from', url)

def smooth_convolution(signal, window_size):
    window_size = 1 + 2 * (window_size // 2) # should be odd
    w = np.hamming(window_size)
    y = (np.convolve(w, signal) / np.convolve(w, np.ones_like(signal)))
    return y[(len(w)-1)//2:-(len(w)//2)]

def smooth_lowess(signal, window_size):
    s = window_size // 2
    window = np.hamming(1+2*s) / np.hamming(1+2*s).sum()
    smoothed = np.empty_like(signal)
    for i in range(len(signal)):
        i0, i1 = max(i-s, 0), min(i+s, len(signal)-1) + 1
        # linear LOWESS smoothing
        smoothed[i] = np.poly1d(np.polyfit(np.arange(i0, i1), signal[i0:i1], deg=1,
            w=np.sqrt(window[i0-i+s:i1-i+s])))(i)
    return smoothed

saveurl("http://woodfortrees.org/data/hadcrut4gl/mean:12", "hadcrut4gl.txt")
with open("hadcrut4gl.txt") as temp_file:
    temp_years, temps = [], []
    for l in temp_file.readlines():
        yT = l.split()
        if (not l.startswith('#')) and len(yT) == 2:
            temp_years.append(float(yT[0]))
            temps.append(float(yT[1]))
    #print('T', list(zip(temp_years, temps)))

saveurl("ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_mm_mlo.txt", "co2_mm_mlo.dat")
with open("co2_mm_mlo.dat") as co2_file:
    data_rows = [x.split() for x in co2_file if not x.startswith("#") and x.find("-99.99") == -1]
    co2_years = [float(x[2]) for x in data_rows]
    co2concs = [float(x[3]) for x in data_rows]
    #print('co2', list(zip(co2_years, co2concs)))

saveurl("ftp://ftp.ncdc.noaa.gov/pub/data/paleo/icecore/antarctica/law/law_co2.txt", "law_co2.txt")
with open("law_co2.txt", encoding="ISO-8859-1") as lawco2_file:
    data_rows = [x.split() for x in lawco2_file if x.startswith("     1")]
    del data_rows[ [float(x[0]) for x in data_rows].index(1010.):] 
    lawco2_years = [float(x[0]) for x in data_rows]
    lawco2concs = [float(x[-1]) for x in data_rows]
    #print('lawco2', list(zip(lawco2_years, lawco2concs)))

saveurl("http://www.sidc.be/silso/DATA/SN_y_tot_V2.0.txt", "yearssn.dat")
with open("yearssn.dat") as sunspot_file:
    data_rows = [x.split() for x in sunspot_file if "*" not in x]
    sun_years = [float(x[0]) for x in data_rows]
    sunspots = [float(x[1]) for x in data_rows]
    #print('sunspots', list(zip(sun_years, sunspots)))

t_min, t_max = 1850, max(temp_years[-1], co2_years[-1], sun_years[-1])
smoothed_temps = smooth_lowess(temps, 25 * 12)
smoothed_sunspots = smooth_convolution(sunspots, 25)

rect = [0.125, 0.1, 0.775, 0.8]
base_ax = plt.axes(rect)
base_ax.yaxis.tick_left()
plt.yticks([])
plt.xlim(t_min, t_max)
plt.gca().xaxis.set_major_locator(ticker.MultipleLocator(20))
plt.xlabel("Year", size=16)
plt.title(r"Temperature, CO$_2$, and Sunspots", size=22)

temp_ax = plt.axes([rect[0],rect[1]+.42*rect[3],rect[2],.58*rect[3]], frameon=False)
temp_ax.yaxis.tick_left()
plt.plot(temp_years, temps, '#FF2200')
tline = plt.plot(temp_years, smoothed_temps, '#AA0000', lw=3)
plt.xlim(t_min, t_max)
plt.ylim(min(temps)*1.03 - 0.03*max(temps), max(temps)*1.03 - 0.03*min(temps))
plt.yticks(np.arange(-0.6,0.9,0.2))
plt.ylabel(u'Temperature anomaly (°C)', size=14, color='#AA0000')
plt.xticks([])

co2_ax = plt.axes([rect[0],rect[1]+.25*rect[3],rect[2],.5*rect[3]], frameon=False)
co2_ax.yaxis.tick_right()
co2_ax.yaxis.set_label_position("right")
co2_ax.xaxis.tick_bottom()
plt.plot(co2_years, co2concs, '#44AAFF')
cline = plt.plot(lawco2_years, lawco2concs, '#2288EE', lw=2)
plt.xlim(t_min, t_max)
plt.ylabel(r'CO$_2$ (ppm)', size=14, color='#2288EE')
plt.xticks([])

sun_ax = plt.axes([rect[0],rect[1],rect[2],.5*rect[3]], frameon=False)
sun_ax.yaxis.tick_left()
plt.plot(sun_years, sunspots, "#FFDD00")
sline = plt.plot(sun_years, smoothed_sunspots, "#FF9900", lw=3)
plt.xlim(t_min, t_max)
plt.yticks(np.arange(0,250,50))
plt.ylabel("Sunspot number", size=14, color='#FF9900')
plt.xticks([])

plt.sca(base_ax)
t_proxy = plt.Line2D([0], [0], c='#AA0000', lw=3)
c_proxy = plt.Line2D([0], [0], c='#2288EE', lw=3)
s_proxy = plt.Line2D([0], [0], c='#FF9900', lw=3)
plt.legend((t_proxy, c_proxy, s_proxy), ("Temperature", r"CO$_2$", "Sunspots"), loc="upper left")

plt.savefig("Temp-co2-sunspot.svg")
plt.show()

许可协议

Leland McInnes 位于英语维基百科,本作品著作权人,特此采用以下许可协议发表本作品:
w:zh:知识共享
署名 相同方式共享
本文件采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。 受免責聲明的約束。
署名: Leland McInnes 位于英语维基百科
您可以自由地:
  • 共享 – 复制、发行并传播本作品
  • 修改 – 改编作品
惟须遵守下列条件:
  • 署名 – 您必须对作品进行署名,提供授权条款的链接,并说明是否对原始内容进行了更改。您可以用任何合理的方式来署名,但不得以任何方式表明许可人认可您或您的使用。
  • 相同方式共享 – 如果您再混合、转换或者基于本作品进行创作,您必须以与原先许可协议相同或相兼容的许可协议分发您贡献的作品。
本许可协议标签作为GFDL许可协议更新的组成部分被添加至本文件。
GNU head 已授权您依据自由软件基金会发行的无固定段落及封面封底文字(Invariant Sections, Front-Cover Texts, and Back-Cover Texts)的GNU自由文件许可协议1.2版或任意后续版本的条款,复制、传播和/或修改本文件。该协议的副本请见“GNU Free Documentation License”。 受免責聲明的約束。

原始上传日志

The original description page was here. All following user names refer to en.wikipedia.
  • 2009-01-11 03:45 Leland McInnes 720×540× (102750 bytes)
  • 2008-10-09 00:57 Leland McInnes 600×480× (34962 bytes)
  • 2007-03-11 02:47 Leland McInnes 600×480× (48910 bytes) Fix for wrong data selection
  • 2007-03-11 02:10 Leland McInnes 600×480× (48672 bytes) Update to Had CRUT3 instead of CRUTEM
  • 2007-03-10 20:46 Leland McInnes 600×480× (48525 bytes)
  • 2007-03-10 20:41 Leland McInnes 600×480× (47761 bytes)
  • 2007-03-10 05:01 Leland McInnes 600×480× (33704 bytes) Global average temperature, Mauna Loa CO<sub>2</sub>, and sunspot activity for the last 50 years.
Any autoconfirmed user can overwrite this file from the same source. Please ensure that overwrites comply with the guideline.

说明

添加一行文字以描述该文件所表现的内容
Graph: Global temperature, atmospheric CO2, and sunspot activity since 1850.

此文件中描述的项目

描绘内容

版权状态 简体中文(已转写)

版权所有 简体中文(已转写)

媒体类型 简体中文(已转写)

image/svg+xml

文件历史

点击某个日期/时间查看对应时刻的文件。

日期/时间缩⁠略⁠图大小用户备注
当前2022年5月30日 (一) 20:232022年5月30日 (一) 20:23版本的缩略图720 × 540(98 KB)Geek3update 2022-04
2021年4月9日 (五) 13:112021年4月9日 (五) 13:11版本的缩略图720 × 540(106 KB)Geek3update 2021-04
2020年6月26日 (五) 13:042020年6月26日 (五) 13:04版本的缩略图720 × 540(105 KB)Geek3data update 2020-05, enlarge temperature y-axis
2020年3月6日 (五) 15:102020年3月6日 (五) 15:10版本的缩略图720 × 540(107 KB)Geek3update with 2020 data
2014年6月22日 (日) 22:152014年6月22日 (日) 22:15版本的缩略图720 × 540(76 KB)Kopiersperreswitch from hadcrut3 to hadcrut4
2014年3月11日 (二) 20:272014年3月11日 (二) 20:27版本的缩略图720 × 540(62 KB)Kopiersperreupdate
2012年6月25日 (一) 21:042012年6月25日 (一) 21:04版本的缩略图731 × 551(75 KB)JohnanthNew version pulled from file discussion, based on the newly updated Python script.
2011年6月20日 (一) 18:382011年6月20日 (一) 18:38版本的缩略图731 × 551(69 KB)Killiondudehttp://m8y.org/tmp/wikipedia/ Someone was kind enough to use updated stats and redo it.
2009年5月4日 (一) 12:102009年5月4日 (一) 12:10版本的缩略图720 × 540(100 KB)File Upload Bot (Magnus Manske) {{BotMoveToCommons|en.wikipedia|year={{subst:CURRENTYEAR}}|month={{subst:CURRENTMONTHNAME}}|day={{subst:CURRENTDAY}}}} {{Information |Description={{en|__NOTOC__ Global average temperature, atmospheric CO<sub>2</sub>, and sunspot activity since 1850. Thi

以下3个页面使用本文件:

全域文件用途

以下其他wiki使用此文件:

元数据