home.social

#08306b — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #08306b, aggregated by home.social.

fetched live
  1. CW: Zum Abschluss den Quelltext

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Created 2021
    @author: Scientists4Future Leipzig
    """

    ### Die Pakete einbinden
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib.colors import ListedColormap

    ## Vorbereitung: Lege die Region fest:
    region = 'Deutschland'
    #region = 'Sachsen'

    ## Diese Regionen Stehen zur Verfügung:
    # 1:'Sachsen',2:'Deutschland',3:'Brandenburg/Berlin', 4:'Brandenburg',
    # 5:'Baden-Wuerttemberg', 6:'Bayern', 7:'Hessen', 8:'Mecklenburg-Vorpommern',
    # 9:'Niedersachsen', 10:'Niedersachsen/Hamburg/Bremen',
    # 11:'Nordrhein-Westfalen', 12:'Rheinland-Pfalz', 13:'Schleswig-Holstein',
    # 14:'Saarland', 15:'Sachsen-Anhalt',
    # 16:'Thueringen/Sachsen-Anhalt', 17:'Thueringen'}

    ### Ed Hawkins Farben einbauen
    cmap = ListedColormap([
    '#08306b', '#08519c', '#2171b5', '#4292c6',
    '#6baed6', '#9ecae1', '#c6dbef', '#deebf7',
    '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a',
    '#ef3b2c', '#cb181d', '#a50f15', '#67000d',
    ])

    ### Daten von Deutschen Wetterdienst DWD holen:
    link = "opendata.dwd.de/climate_enviro"
    data = pd.read_table(link,skiprows=1, sep=';')

    ### Definitionen für die Berechnungen:
    # Referenzzeitraum für Mittelwertberechnung: 1971 - 2000 nach Definition von Ed Hawkins (showyourstripes.info/faq)
    ref_min = 1971
    ref_max = 2000
    ref_data = data[(data['Jahr']>=ref_min) & (data['Jahr']<=ref_max)]

    # Referenzzeitraum für die Standardabweichung für die entsprechende Farbskala
    ref_min_std = 1901
    ref_max_std = 2000
    ref_data_std = data[(data['Jahr']>=ref_min_std) & (data['Jahr']<=ref_max_std)]
    std = ref_data_std[region].std()
    #Minimum und Maximumwerte für die Farbskala. +- 2.6 / +- 1.7
    vmin = -2.6*std
    vmax = 2.6*std

    ## Berechnungen
    # Temperaturanomalie berechnen: Temperaturdaten der Region Minus den Mittelwert des Referenzzeitraums
    temps = data[region] - ref_data[region].mean()
    # Daten übereinander Stapeln, damit es später gezeichnet werden kann.
    stacked_temps = np.stack((temps, temps))

    ### Erstellung der Abbildung
    # Erzeugen der Abbildung selber mit Größe 16 Zoll Breite, 9 Zoll Höhe
    fig = plt.figure(figsize=(16,9))
    # Alles an Achsen und Beschriftungen ausschalten, damit nur die Streifen gezeigt werden.
    plt.gca().set_axis_off()
    plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)
    plt.margins(0,0)
    plt.gca().xaxis.set_major_locator(plt.NullLocator())
    plt.gca().yaxis.set_major_locator(plt.NullLocator())

    # Streifen Zeichnen
    img = plt.imshow(stacked_temps, cmap=cmap, aspect='auto', vmin=vmin, vmax=vmax, interpolation='none') #

    # Textbeschriftung, Position in der Mitte
    text = 'Temperaturanomalien in ' + region + '\nvon ' + str(data['Jahr'].min()) + ' bis ' + str(data['Jahr'].max())
    plt.text((data['Jahr'].max()-data['Jahr'].min())/2, 1.4, text, fontsize=44, fontweight='bold', color='black', alpha=0.8,ha='center')

    # Als Datei abspreichern
    plt.savefig("warmingstripes_"+temps.name+'_'+str(data['Jahr'].min())+'-'+str(data['Jahr'].max())+".png", bbox_inches = 'tight', pad_inches = 0)#, dpi=300)