GWL
Richtungsänderung von Großwetterlagen
Ergebnis¶
Abbildung: Qualitative Klimaänderungssignale in der Häufigkeit von Großwetterlagen (GWL) in globalen Klimamodellsimulationen für RCP8.5 von 2061-2090 vs 1971-2000 (Apr-Sep). Die Farbe markieren jeweils die Kritikalität für meteorologische Extreme:
- Starkregen (blau)
- Hitze (rot)
- Sturm (grün)
In grau sind beobachtete Veränderungen 1990-2019 vs 1961-1990 markiert.
Code¶
Python
# coding: utf-8
# -*- coding: iso-8859-1 -*-
import sys
import os
import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from mpl_toolkits.basemap import shiftgrid
import shapefile
import numpy as N
import math
from scipy import signal,stats
from matplotlib.collections import PatchCollection
import pandas as pd
from matplotlib import rc
rc('text', usetex=True)
rc('text.latex', preamble='\usepackage{color}')
import pydotplus # To create our Decision Tree Graph
from IPython.display import Image # To Display a image of our graph
plt.style.use('bmh')
params = {'legend.fontsize': 8,'font.family': 'serif'}
plt.rcParams.update(params)
go = ['WZ','BM','TRM','TRW','TM','SWZ','WA','HM','NWZ','HFA']
ng = len(go)
fig = plt.figure(figsize=(10,6))
ax = plt.subplot(111)
plt.plot([-10,50],[0,0],'k')
plt.plot([0.6,0.6],[-30,30],'k')
mods = ['NCEP-NCAR','MPI-ESM-LR','HadGEM2-ES','IPSL-CM5A-MR','EC-EARTH','CNRM-CM5','NorESM1-M']
for mod in mods:
num = N.zeros(ng,float)
avg = N.zeros(ng,float)
file = '../dat/'+mod+'.dat'
date=N.genfromtxt(file,usecols=(0),delimiter=';',dtype='S')
gwls=N.genfromtxt(file,usecols=(3),delimiter=';',dtype='S')
jj = []
mm = []
for d in date:
jj.append(int(d[0:4]))
mm.append(int(d[5:7]))
jj = N.array(jj)
mm = N.array(mm)
if(mod=='NCEP-NCAR'):
id = N.where((jj>=1961)&(jj<=1990)&(mm>=4)&(mm<=9))[0]
else:
id = N.where((jj>=1961)&(jj<=2000)&(mm>=4)&(mm<=9))[0]
for g in range(ng):
ig = N.where(gwls[id]==go[g])[0]
num[g] = len(ig)/30.
avg[g] = 100.*(len(ig)/30.)/180.
if(mod=='NCEP-NCAR'):
id = N.where((jj>=1990)&(jj<=2019)&(mm>=4)&(mm<=9))[0]
else:
id = N.where((jj>=2061)&(jj<=2090)&(mm>=4)&(mm<=9))[0]
for g in range(ng):
ig = N.where(gwls[id]==go[g])[0]
num[g] = len(ig)/30.-num[g]
for g in range(ng):
if(mod=='NCEP-NCAR'):
plt.text(avg[g],num[g],go[g],size=14,weight='bold',ha='center',va='center',bbox=dict(boxstyle="circle",ec='k',fc='gray',alpha=0.7,lw=2),zorder=2)
else:
if((go[g]=='TM')|(go[g]=='TRM')):
plt.text(avg[g],num[g],go[g],size=14,weight='bold',ha='center',va='center',bbox=dict(boxstyle="circle",ec='k',fc='dodgerblue',alpha=0.7,lw=2),zorder=1)
if((go[g]=='HM')|(go[g]=='SWZ')|(go[g]=='BM')):
plt.text(avg[g],num[g],go[g],size=14,weight='bold',ha='center',va='center',bbox=dict(boxstyle="circle",ec='k',fc='orangered',alpha=0.7,lw=2),zorder=1)
if((go[g]=='WZ')):
plt.text(avg[g],num[g],go[g],size=14,weight='bold',ha='center',va='center',bbox=dict(boxstyle="circle",ec='k',fc='g',alpha=0.7,lw=2),zorder=1)
else:
plt.text(avg[g],num[g],go[g],size=14,weight='bold',ha='center',va='center',bbox=dict(boxstyle="circle",ec='k',fc='w',alpha=0.5,lw=2),zorder=1)
plt.xlabel(r'\textbf{GWL Anteil an Gesamt}',fontsize=20,weight='bold')
plt.ylabel(r'\textbf{\"Anderung durch Klimawandel}',fontsize=20,weight='bold')
plt.title(r'\textbf{GCM-GWL RCP8.5: 2061-2090 vs 1971-2000 (Apr-Sep)}',fontsize=20)
#plt.xticks([0,10,20,30],['','10\%','20\%','30\%'],fontsize=16)
plt.yticks([-10,10],['Abnahme','Zunahme'],fontsize=16,rotation=90,va='center')
plt.semilogx()
plt.xticks([1,2,5,10,30],['1\%','2\%','5\%','10\%','30\%'],fontsize=16)
plt.xlim(0.5,50)
plt.ylim(-20,20)
ax.tick_params(direction='out')
plt.tight_layout()
plt.savefig('./img/gwl.png',dpi=240,bbox_inches='tight',pad_inches=0.0)#,transparent='true')