Analyse von hoch-augelösten, globalen ICON Simulationen¶
Inhalt¶
Dieses Jupyter Notebook zeigt wie man globale ICON Simulationsdaten lädt und plottet.
- **Jupyter Notebook** ist eine Browser-basierte Programmierlösung, um wissenschaftliche Daten mit der Programmiersprache
Python
zu analysieren. - Python ist eine Programmiersprache, die man leicht erlernen kann
- **ICON** ist ein Computermodell für die Atmosphäre (Wolken & Wetter).
Importieren von Modulen¶
Python arbeitet mit Modulen, die importiert werden, um bestimmte Aufgaben einfacher zu machen
[22]:
%matplotlib inline
# das führt zu Bildern, die direkt im Notebook stehen
import numpy as np # Standard Bibliothek für mathematische Operationen
import pylab as plt # Standard Bibliothek für Plots
import cartopy.crs as ccrs # Bibliothek für Karten / Kartographie
import xarray as xr # Einlesen von Daten (speziell gut für wissenschaftliche Daten im netCDF-Format )
Daten einlesen¶
Plan¶
Folgendes muss gemacht werden:
- Finde raus, wo die Daten liegen (oder kopiere die Daten in dein Dateisystem)!
- Setze den Pfad zu den Daten!
- Öffne die Daten mit
Xarray
!
Pfad setzen¶
[2]:
# Das ist mein Pfad - der muss geändert werden!
datei_pfad = '/vols/fs1/store/senf/data/dyamond/ICON-5km-fix-sst-conv-new'
Daten öffnen¶
[3]:
dateien_liste = '%s/2D_dyamond_accu_DOM01_ML_0[2-3]*_1x1deg.nc' % datei_pfad
[4]:
icon_daten = xr.open_mfdataset( dateien_liste, combine = 'by_coords')
Daten anschauen¶
Allgemein¶
[5]:
print( icon_daten )
<xarray.Dataset>
Dimensions: (lat: 180, lon: 360, time: 200)
Coordinates:
* lon (lon) float64 0.0 1.0 2.0 3.0 4.0 ... 356.0 357.0 358.0 359.0
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 ... 86.5 87.5 88.5 89.5
* time (time) datetime64[ns] 2016-08-03T01:45:00 ... 2016-08-05T03:30:00
Data variables:
ACCTHB_T (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
ACCSOB_T (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
SODT_RAD (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
ACCTHB_S (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
THUS_RAD (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
ACCSOB_S (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
param198.4.0 (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
param199.4.0 (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
ACCLHFL_S (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
ACCSHFL_S (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
TOT_PREC (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>
Attributes:
CDI: Climate Data Interface version 1.9.7.1 (http:/...
history: Sat Nov 30 01:26:57 2019: cdo -P 4 -z zip_4 -r...
institution: European Centre for Medium-Range Weather Forec...
Conventions: CF-1.6
CDO: Climate Data Operators version 1.9.7.1 (http:/...
cdo_openmp_thread_number: 4
Da stehen viele Variablen drin, z.B. ACCTHB_T
. Aber auch Koordinaten wie time
oder lon
sind enthalten.
Koordinaten¶
Erst schauen wir auf die Zeit. Sie steht in der icon_daten.time
Variable.
[6]:
icon_daten.time
[6]:
<xarray.DataArray 'time' (time: 200)>
array(['2016-08-03T01:45:00.000000000', '2016-08-03T02:00:00.000000000',
'2016-08-03T02:15:00.000000000', '2016-08-03T02:30:00.000000000',
'2016-08-03T02:45:00.000000000', '2016-08-03T03:00:00.000000000',
'2016-08-03T03:15:00.000000000', '2016-08-03T03:30:00.000000000',
'2016-08-03T03:45:00.000000000', '2016-08-03T04:00:00.000000000',
'2016-08-03T04:15:00.000000000', '2016-08-03T04:30:00.000000000',
'2016-08-03T04:45:00.000000000', '2016-08-03T05:00:00.000000000',
'2016-08-03T05:15:00.000000000', '2016-08-03T05:30:00.000000000',
'2016-08-03T05:45:00.000000000', '2016-08-03T06:00:00.000000000',
'2016-08-03T06:15:00.000000000', '2016-08-03T06:30:00.000000000',
'2016-08-03T06:45:00.000000000', '2016-08-03T07:00:00.000000000',
'2016-08-03T07:15:00.000000000', '2016-08-03T07:30:00.000000000',
'2016-08-03T07:45:00.000000000', '2016-08-03T08:00:00.000000000',
'2016-08-03T08:15:00.000000000', '2016-08-03T08:30:00.000000000',
'2016-08-03T08:45:00.000000000', '2016-08-03T09:00:00.000000000',
'2016-08-03T09:15:00.000000000', '2016-08-03T09:30:00.000000000',
'2016-08-03T09:45:00.000000000', '2016-08-03T10:00:00.000000000',
'2016-08-03T10:15:00.000000000', '2016-08-03T10:30:00.000000000',
'2016-08-03T10:45:00.000000000', '2016-08-03T11:00:00.000000000',
'2016-08-03T11:15:00.000000000', '2016-08-03T11:30:00.000000000',
'2016-08-03T11:45:00.000000000', '2016-08-03T12:00:00.000000000',
'2016-08-03T12:15:00.000000000', '2016-08-03T12:30:00.000000000',
'2016-08-03T12:45:00.000000000', '2016-08-03T13:00:00.000000000',
'2016-08-03T13:15:00.000000000', '2016-08-03T13:30:00.000000000',
'2016-08-03T13:45:00.000000000', '2016-08-03T14:00:00.000000000',
'2016-08-03T14:15:00.000000000', '2016-08-03T14:30:00.000000000',
'2016-08-03T14:45:00.000000000', '2016-08-03T15:00:00.000000000',
'2016-08-03T15:15:00.000000000', '2016-08-03T15:30:00.000000000',
'2016-08-03T15:45:00.000000000', '2016-08-03T16:00:00.000000000',
'2016-08-03T16:15:00.000000000', '2016-08-03T16:30:00.000000000',
'2016-08-03T16:45:00.000000000', '2016-08-03T17:00:00.000000000',
'2016-08-03T17:15:00.000000000', '2016-08-03T17:30:00.000000000',
'2016-08-03T17:45:00.000000000', '2016-08-03T18:00:00.000000000',
'2016-08-03T18:15:00.000000000', '2016-08-03T18:30:00.000000000',
'2016-08-03T18:45:00.000000000', '2016-08-03T19:00:00.000000000',
'2016-08-03T19:15:00.000000000', '2016-08-03T19:30:00.000000000',
'2016-08-03T19:45:00.000000000', '2016-08-03T20:00:00.000000000',
'2016-08-03T20:15:00.000000000', '2016-08-03T20:30:00.000000000',
'2016-08-03T20:45:00.000000000', '2016-08-03T21:00:00.000000000',
'2016-08-03T21:15:00.000000000', '2016-08-03T21:30:00.000000000',
'2016-08-03T21:45:00.000000000', '2016-08-03T22:00:00.000000000',
'2016-08-03T22:15:00.000000000', '2016-08-03T22:30:00.000000000',
'2016-08-03T22:45:00.000000000', '2016-08-03T23:00:00.000000000',
'2016-08-03T23:15:00.000000000', '2016-08-03T23:30:00.000000000',
'2016-08-03T23:45:00.000000000', '2016-08-04T00:00:00.000000000',
'2016-08-04T00:15:00.000000000', '2016-08-04T00:30:00.000000000',
'2016-08-04T00:45:00.000000000', '2016-08-04T01:00:00.000000000',
'2016-08-04T01:15:00.000000000', '2016-08-04T01:30:00.000000000',
'2016-08-04T01:45:00.000000000', '2016-08-04T02:00:00.000000000',
'2016-08-04T02:15:00.000000000', '2016-08-04T02:30:00.000000000',
'2016-08-04T02:45:00.000000000', '2016-08-04T03:00:00.000000000',
'2016-08-04T03:15:00.000000000', '2016-08-04T03:30:00.000000000',
'2016-08-04T03:45:00.000000000', '2016-08-04T04:00:00.000000000',
'2016-08-04T04:15:00.000000000', '2016-08-04T04:30:00.000000000',
'2016-08-04T04:45:00.000000000', '2016-08-04T05:00:00.000000000',
'2016-08-04T05:15:00.000000000', '2016-08-04T05:30:00.000000000',
'2016-08-04T05:45:00.000000000', '2016-08-04T06:00:00.000000000',
'2016-08-04T06:15:00.000000000', '2016-08-04T06:30:00.000000000',
'2016-08-04T06:45:00.000000000', '2016-08-04T07:00:00.000000000',
'2016-08-04T07:15:00.000000000', '2016-08-04T07:30:00.000000000',
'2016-08-04T07:45:00.000000000', '2016-08-04T08:00:00.000000000',
'2016-08-04T08:15:00.000000000', '2016-08-04T08:30:00.000000000',
'2016-08-04T08:45:00.000000000', '2016-08-04T09:00:00.000000000',
'2016-08-04T09:15:00.000000000', '2016-08-04T09:30:00.000000000',
'2016-08-04T09:45:00.000000000', '2016-08-04T10:00:00.000000000',
'2016-08-04T10:15:00.000000000', '2016-08-04T10:30:00.000000000',
'2016-08-04T10:45:00.000000000', '2016-08-04T11:00:00.000000000',
'2016-08-04T11:15:00.000000000', '2016-08-04T11:30:00.000000000',
'2016-08-04T11:45:00.000000000', '2016-08-04T12:00:00.000000000',
'2016-08-04T12:15:00.000000000', '2016-08-04T12:30:00.000000000',
'2016-08-04T12:45:00.000000000', '2016-08-04T13:00:00.000000000',
'2016-08-04T13:15:00.000000000', '2016-08-04T13:30:00.000000000',
'2016-08-04T13:45:00.000000000', '2016-08-04T14:00:00.000000000',
'2016-08-04T14:15:00.000000000', '2016-08-04T14:30:00.000000000',
'2016-08-04T14:45:00.000000000', '2016-08-04T15:00:00.000000000',
'2016-08-04T15:15:00.000000000', '2016-08-04T15:30:00.000000000',
'2016-08-04T15:45:00.000000000', '2016-08-04T16:00:00.000000000',
'2016-08-04T16:15:00.000000000', '2016-08-04T16:30:00.000000000',
'2016-08-04T16:45:00.000000000', '2016-08-04T17:00:00.000000000',
'2016-08-04T17:15:00.000000000', '2016-08-04T17:30:00.000000000',
'2016-08-04T17:45:00.000000000', '2016-08-04T18:00:00.000000000',
'2016-08-04T18:15:00.000000000', '2016-08-04T18:30:00.000000000',
'2016-08-04T18:45:00.000000000', '2016-08-04T19:00:00.000000000',
'2016-08-04T19:15:00.000000000', '2016-08-04T19:30:00.000000000',
'2016-08-04T19:45:00.000000000', '2016-08-04T20:00:00.000000000',
'2016-08-04T20:15:00.000000000', '2016-08-04T20:30:00.000000000',
'2016-08-04T20:45:00.000000000', '2016-08-04T21:00:00.000000000',
'2016-08-04T21:15:00.000000000', '2016-08-04T21:30:00.000000000',
'2016-08-04T21:45:00.000000000', '2016-08-04T22:00:00.000000000',
'2016-08-04T22:15:00.000000000', '2016-08-04T22:30:00.000000000',
'2016-08-04T22:45:00.000000000', '2016-08-04T23:00:00.000000000',
'2016-08-04T23:15:00.000000000', '2016-08-04T23:30:00.000000000',
'2016-08-04T23:45:00.000000000', '2016-08-05T00:00:00.000000000',
'2016-08-05T00:15:00.000000000', '2016-08-05T00:30:00.000000000',
'2016-08-05T00:45:00.000000000', '2016-08-05T01:00:00.000000000',
'2016-08-05T01:15:00.000000000', '2016-08-05T01:30:00.000000000',
'2016-08-05T01:45:00.000000000', '2016-08-05T02:00:00.000000000',
'2016-08-05T02:15:00.000000000', '2016-08-05T02:30:00.000000000',
'2016-08-05T02:45:00.000000000', '2016-08-05T03:00:00.000000000',
'2016-08-05T03:15:00.000000000', '2016-08-05T03:30:00.000000000'],
dtype='datetime64[ns]')
Coordinates:
* time (time) datetime64[ns] 2016-08-03T01:45:00 ... 2016-08-05T03:30:00
Attributes:
standard_name: time
axis: T
Okay, die Daten sind aller 15 Minuten gespeichert und gehen über mehrere Tage.
[7]:
icon_daten.lon
[7]:
<xarray.DataArray 'lon' (lon: 360)>
array([ 0., 1., 2., ..., 357., 358., 359.])
Coordinates:
* lon (lon) float64 0.0 1.0 2.0 3.0 4.0 ... 355.0 356.0 357.0 358.0 359.0
Attributes:
standard_name: longitude
long_name: longitude
units: degrees_east
axis: X
Die geographische Länge in Grad.
[8]:
icon_daten.lat
[8]:
<xarray.DataArray 'lat' (lat: 180)>
array([-89.5, -88.5, -87.5, -86.5, -85.5, -84.5, -83.5, -82.5, -81.5, -80.5,
-79.5, -78.5, -77.5, -76.5, -75.5, -74.5, -73.5, -72.5, -71.5, -70.5,
-69.5, -68.5, -67.5, -66.5, -65.5, -64.5, -63.5, -62.5, -61.5, -60.5,
-59.5, -58.5, -57.5, -56.5, -55.5, -54.5, -53.5, -52.5, -51.5, -50.5,
-49.5, -48.5, -47.5, -46.5, -45.5, -44.5, -43.5, -42.5, -41.5, -40.5,
-39.5, -38.5, -37.5, -36.5, -35.5, -34.5, -33.5, -32.5, -31.5, -30.5,
-29.5, -28.5, -27.5, -26.5, -25.5, -24.5, -23.5, -22.5, -21.5, -20.5,
-19.5, -18.5, -17.5, -16.5, -15.5, -14.5, -13.5, -12.5, -11.5, -10.5,
-9.5, -8.5, -7.5, -6.5, -5.5, -4.5, -3.5, -2.5, -1.5, -0.5,
0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5,
10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5,
20.5, 21.5, 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5, 29.5,
30.5, 31.5, 32.5, 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5,
40.5, 41.5, 42.5, 43.5, 44.5, 45.5, 46.5, 47.5, 48.5, 49.5,
50.5, 51.5, 52.5, 53.5, 54.5, 55.5, 56.5, 57.5, 58.5, 59.5,
60.5, 61.5, 62.5, 63.5, 64.5, 65.5, 66.5, 67.5, 68.5, 69.5,
70.5, 71.5, 72.5, 73.5, 74.5, 75.5, 76.5, 77.5, 78.5, 79.5,
80.5, 81.5, 82.5, 83.5, 84.5, 85.5, 86.5, 87.5, 88.5, 89.5])
Coordinates:
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 -85.5 ... 86.5 87.5 88.5 89.5
Attributes:
standard_name: latitude
long_name: latitude
units: degrees_north
axis: Y
Die geographische Breite ebenfalls in Grad.
Zeit auswählen¶
Wir wählen einfach erst mal einen Tag aus.
[9]:
tag = '2016-08-04'
Die Schreibweise ist Jahr-Monat-Tag
, d.h. oben steht der 4. August 2016, klar oder?
[10]:
icon_daten_tag = icon_daten.sel( time = tag )
icon_daten_tag = icon_daten_tag.chunk( {'time': 96 } )
print( icon_daten_tag )
<xarray.Dataset>
Dimensions: (lat: 180, lon: 360, time: 96)
Coordinates:
* lon (lon) float64 0.0 1.0 2.0 3.0 4.0 ... 356.0 357.0 358.0 359.0
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 ... 86.5 87.5 88.5 89.5
* time (time) datetime64[ns] 2016-08-04 ... 2016-08-04T23:45:00
Data variables:
ACCTHB_T (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
ACCSOB_T (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
SODT_RAD (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
ACCTHB_S (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
THUS_RAD (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
ACCSOB_S (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
param198.4.0 (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
param199.4.0 (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
ACCLHFL_S (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
ACCSHFL_S (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
TOT_PREC (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
Attributes:
CDI: Climate Data Interface version 1.9.7.1 (http:/...
history: Sat Nov 30 01:26:57 2019: cdo -P 4 -z zip_4 -r...
institution: European Centre for Medium-Range Weather Forec...
Conventions: CF-1.6
CDO: Climate Data Operators version 1.9.7.1 (http:/...
cdo_openmp_thread_number: 4
Mit icon_daten.sel
können Datenbereiche ausgewählt werden (siehe Link)
96 Zeitschritte. Das kommt von 4 Datenfeldern pro Stunde und 24 Stunden pro Tag.
[11]:
24 * 4
[11]:
96
Auch klar, oder?
Variablen genauer anschauen¶
Zwei Variablen repräsentieren Strahlungsflüsse am Oberrand der Atmosphäre (wo auch immer der nun wieder liegt …).
Die Variablen heißen:
ACCTHB_T
ACCSOB_T
Wir schauen mal genauer hin:
[12]:
print(icon_daten_tag['ACCTHB_T'])
<xarray.DataArray 'ACCTHB_T' (time: 96, lat: 180, lon: 360)>
dask.array<rechunk-merge, shape=(96, 180, 360), dtype=float32, chunksize=(96, 180, 360), chunktype=numpy.ndarray>
Coordinates:
* lon (lon) float64 0.0 1.0 2.0 3.0 4.0 ... 355.0 356.0 357.0 358.0 359.0
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 -85.5 ... 86.5 87.5 88.5 89.5
* time (time) datetime64[ns] 2016-08-04 ... 2016-08-04T23:45:00
Attributes:
standard_name: toa_outgoing_longwave_flux
long_name: Net long wave radiation flux - accumulated _ model top
units: W m-2
param: 5.5.0
level_type: toa
Das ist der Strahlungsfluss der thermischen (oder infraroten) Ausstrahlung, der nach oben geht. Die Erde strahlt mit ihrer eigenen Temperatur (siehe Wärmestrahlung).
Interpretation: Das Wort accumulated
(im long_name
Attribut) bedeutet, dass die Strahlungsleistung pro Fläche (Watt pro Quadradmeter) aufsummiert wird und so die “akkumulierte” Strahlungsenergie pro Fläche (Joule pro Quadradmeter) abgespeichert wird.
Achtung: Das Attribut units
ist also falsch. Da müsste J m-2
stehen!
[13]:
print(icon_daten_tag['ACCSOB_T'])
<xarray.DataArray 'ACCSOB_T' (time: 96, lat: 180, lon: 360)>
dask.array<rechunk-merge, shape=(96, 180, 360), dtype=float32, chunksize=(96, 180, 360), chunktype=numpy.ndarray>
Coordinates:
* lon (lon) float64 0.0 1.0 2.0 3.0 4.0 ... 355.0 356.0 357.0 358.0 359.0
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 -85.5 ... 86.5 87.5 88.5 89.5
* time (time) datetime64[ns] 2016-08-04 ... 2016-08-04T23:45:00
Attributes:
long_name: Net short wave radiation flux - accumulated _ model top
units: W m-2
param: 9.4.0
level_type: toa
Das ist der akkumulierte Strahlungsfluss im solaren Bereich (also durch sichtbare Sonnenstrahlung bestimmt). Auch hier sollte die Einheit J m-2
sein.
Wir nehmen nur die beiden Strahlungsvariablen:
[14]:
icon_akku_strahlung = icon_daten_tag[['ACCSOB_T', 'ACCTHB_T']]
Strahlungsflüsse¶
Um einen Strahlungsfluss aus unseren Daten zu erhalten, muss also die Strahlungsenergie (pro Fläche) zu zwei Zeiten (jetzt und 15 min früher) betrachtet werden. Berechnet man die Differenz der beiden Strahlungsenergien, so bekommt man die Energie, die innerhalb von 15 min dazu gekommen ist. Dividiert man diese Differenz noch durch das Zeitinterval bekommt man eine momentane Strahlungsleistung pro Fläche.
Wir nehmen die xarray
-Methode differentiate
. Mit ihr können wir ganz einfach Differenzen berechnen.
[17]:
icon_strahlungsfluss = icon_akku_strahlung.differentiate('time', datetime_unit = 's')
Ich glaube, es wäre auch schöner die Strahlungsflüsse umzubenennen. Üblich sind englische Kürzel für “shortwave flux” (swf) und “longwave flux” (lwf). Wir nehmen dafür die Methode icon_strahlungsfluss.rename_vars
und müssen ein “Dictionary” übergeben, dass alte in neue Namen abbildet.
[18]:
icon_strahlungsfluss = icon_strahlungsfluss.rename_vars({'ACCSOB_T' : 'swf', 'ACCTHB_T' : 'lwf'})
[19]:
print( icon_strahlungsfluss )
<xarray.Dataset>
Dimensions: (lat: 180, lon: 360, time: 96)
Coordinates:
* lon (lon) float64 0.0 1.0 2.0 3.0 4.0 ... 355.0 356.0 357.0 358.0 359.0
* time (time) datetime64[ns] 2016-08-04 ... 2016-08-04T23:45:00
* lat (lat) float64 -89.5 -88.5 -87.5 -86.5 -85.5 ... 86.5 87.5 88.5 89.5
Data variables:
swf (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
lwf (time, lat, lon) float32 dask.array<chunksize=(96, 180, 360), meta=np.ndarray>
Attributes:
CDI: Climate Data Interface version 1.9.7.1 (http:/...
history: Sat Nov 30 01:26:57 2019: cdo -P 4 -z zip_4 -r...
institution: European Centre for Medium-Range Weather Forec...
Conventions: CF-1.6
CDO: Climate Data Operators version 1.9.7.1 (http:/...
cdo_openmp_thread_number: 4
So, die Daten sehen doch ganz gut aus!
Plots für einen Zeitpunkt¶
Wir wollen für einen Zeitpunkt, die Strahlungsflüsse in eine Karte plotten.
- Zeitpunkt und Feld wählen
- Karte plotten
Langwellig¶
[36]:
zeit_punkt = '2016-08-04 12:00'
variable = icon_strahlungsfluss['lwf'].sel(time = zeit_punkt)
[37]:
fig = plt.figure(figsize=(16, 6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Robinson())
ax.coastlines()
ax.set_global()
crs = ccrs.PlateCarree()
variable.plot.pcolormesh( ax = ax, transform = crs )
plt.suptitle('Langwelliger Strahlungsfluss ($W / m^2$)', fontsize = 'x-large', fontweight = 'bold' )
[37]:
Text(0.5, 0.98, 'Langwelliger Strahlungsfluss ($W / m^2$)')
Kurzwellig¶
[38]:
zeit_punkt = '2016-08-04 12:00'
variable = icon_strahlungsfluss['swf'].sel(time = zeit_punkt)
[42]:
fig = plt.figure(figsize=(16, 6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Robinson())
ax.coastlines()
ax.set_global()
crs = ccrs.PlateCarree()
variable.plot.pcolormesh( ax = ax, transform = crs )
plt.suptitle('Kurzwelliger Strahlungsfluss ($W / m^2$)', fontsize = 'x-large', fontweight = 'bold' )
[42]:
Text(0.5, 0.98, 'Kurzwelliger Strahlungsfluss ($W / m^2$)')
Was siehst Du? Verstehst Du die Unterschiede?
Plots für einen ganzen Tag¶
Wir wollen für einen ganzen Tag, die Strahlungsflüsse in eine Karte plotten.
- Feld wählen und Mittelwert bilden
- Karte plotten
Langwellig¶
[43]:
variable = icon_strahlungsfluss['lwf'].mean('time')
[44]:
fig = plt.figure(figsize=(16, 6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Robinson())
ax.coastlines()
ax.set_global()
crs = ccrs.PlateCarree()
variable.plot.pcolormesh( ax = ax, transform = crs )
plt.suptitle('Langwelliger Strahlungsfluss ($W / m^2$)', fontsize = 'x-large', fontweight = 'bold' )
[44]:
Text(0.5, 0.98, 'Langwelliger Strahlungsfluss ($W / m^2$)')
Kurzwellig¶
[45]:
variable = icon_strahlungsfluss['swf'].mean('time')
[46]:
fig = plt.figure(figsize=(16, 6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.Robinson())
ax.coastlines()
ax.set_global()
crs = ccrs.PlateCarree()
variable.plot.pcolormesh( ax = ax, transform = crs )
plt.suptitle('Kurzwelliger Strahlungsfluss ($W / m^2$)', fontsize = 'x-large', fontweight = 'bold' )
[46]:
Text(0.5, 0.98, 'Kurzwelliger Strahlungsfluss ($W / m^2$)')
Was siehst Du jetzt?
Vergleiche mit den Abbildungen oben!