File:5 9 16 Andrea TempSpiralEdHawkins.gif

From Department of Mathematics at UTSA
Jump to navigation Jump to search

Original file(743 × 791 pixels, file size: 1.79 MB, MIME type: image/gif, looped, 170 frames, 29 s)

Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.

This file is from Wikimedia Commons and may be used by other projects. The description on its file description page there is shown below.

This file has been superseded by Global temperature change spiral 2020 100MPx.gif. It is recommended to use the other file. Please note that deleting superseded images requires consent.

Reason to use the other file: "updated to year 2020"
new file

Summary

Description
English: Climate spiral: A spiral graph represents global temperature change (1850 to 2018); Data from the HadCRUT4 dataset http://www.metoffice.gov.uk/hadobs/hadcrut4/
Date
Source Spiralling global temperatures Climate Log Book
Author Ed Hawkins, a climate scientist in the National Centre for Atmospheric Science at the University of Reading.
Other versions
full size Global warming spiral 2018.gif

Source code

A static version of this can be created with the following code:

Python Matplotlib source code
#!/usr/bin/python3
# -*- coding: utf8 -*-

import calendar
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import os
from math import *

plt.rc('mathtext', default='regular')

data_filename = "HadCRUT.4.6.0.0.monthly_ns_avg.txt"

if not os.path.isfile(data_filename):
    print("need raw data from https://www.metoffice.gov.uk/hadobs/hadcrut4/index.html")
    exit()

year_month_T = []
with open(data_filename, "r") as df:
    for l in df.readlines():
        l = l.strip().split()
        year_month_T.append([int(l[0].split("/")[0]), int(l[0].split("/")[1]), float(l[1])])

years, months, T = [np.array(i) for i in zip(*year_month_T)]
T_baseline = np.mean(T[np.logical_and(years >= 1850, years <= 1900)])
T -= T_baseline
angles = -(months-1) / 12. * 2 * pi
points = np.vstack((angles, T)).T
n = len(points)

fig = plt.figure(figsize=(5, 5.4))
fig.patch.set_facecolor('#333333')
cmap = plt.cm.get_cmap('viridis')
ax = fig.add_axes([0.07, 0.07, 0.86, 0.8], projection="polar", axisbg="k")
ax.set_theta_zero_location("N")
r0, r1 = -1., 2.3
ax.set_ylim(r0, r1)

ax.add_artist(mpl.patches.Arc((0, 0), 2*(0-r0), 2*(0-r0), transform=ax.transData._b,
    theta1=90+20, theta2=90-20, color="white", lw=1.8))
ax.add_artist(mpl.patches.Arc((0, 0), 2*(1.5-r0), 2*(1.5-r0), transform=ax.transData._b,
    theta1=90+10, theta2=90-10, color="red", lw=1.8))
ax.add_artist(mpl.patches.Arc((0, 0), 2*(2-r0), 2*(2-r0), transform=ax.transData._b,
    theta1=90+8, theta2=90-8, color="red", lw=1.8))
ax.text(0, 0.0, r"$0^\circ C$", color="white",
    ha='center', va="center", fontsize=10, zorder=-1)
ax.text(0, 1.5, r"$1.5^\circ C$", color="red",
    ha='center', va="center", fontsize=10, zorder=-1)
ax.text(0, 2.0, r"$2.0^\circ C$", color="red",
    ha='center', va="center", fontsize=10, zorder=-1)

# note: replotting each time is slow, could be faster if figure was kept.
for i, (start, stop) in enumerate(zip(points[:iframe], points[1:iframe+1])):
    x, y = zip(start, stop)
    ax.plot(x, y, color=cmap(i /n))

ax.get_yaxis().set_visible(False)
ax.set_xticks(np.radians(np.arange(0, -360, -30)))
ax.set_xticklabels([calendar.month_abbr[i+1] for i in range(12)], color="#cccccc")
for i, tick in enumerate(ax.get_xticklabels()):
    tick.set_rotation(-30 * i)
ax.grid(False)

fig.suptitle(u"Global temperature change (%s\u2013%s)" % (min(years), max(years)),
    color="white")
fig.text(0.96, 0.02, 'HadCRUT4', ha='right', va='bottom', color="white", fontsize=8)
#ax.text(0, r0, str(years[iframe]), color="white", ha='center', va="center", fontsize=12)

plt.savefig("Temperature_spiral_HadCRUT4.svg",
    facecolor=fig.get_facecolor(), edgecolor="none")

Licensing

w:en:Creative Commons
attribution
This file is licensed under the Creative Commons Attribution 3.0 Unported 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.

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

9 May 2016

image/gif

1f567bfe1a2f37676b0dfc69c713505ca343b231

1,880,557 byte

28.8 second

791 pixel

743 pixel

File history

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

Date/TimeThumbnailDimensionsUserComment
current15:30, 1 March 2020Thumbnail for version as of 15:30, 1 March 2020743 × 791 (1.79 MB)Bürgerentscheidoriginal file now resized with lanczos3.

The following page uses this file: