Graph: Python

Terms and conditions of use

We have no responsibility or liability for any unintended consequences or damages that the use of the following information may cause. Please use them at your own risk.

Installation: Linux & Mac

Python with "numpy", "matplotlib", "pandas", "netCDF4", "basemap" etc.
How to install Python

Utilities

To compute climatology

Examples

Time series

[Note]
* Temperature time series (HadCRUT5) were downloaded from here in August 2021.
* Morice, C.P., Kennedy, J.J., Rayner, N.A., Winn, J.P., Hogan, E., Killick, R.E., Dunn, R.J.H., Osborn, T.J., Jones, P.D., and Simpson, I.R., 2021: An updated assessment of near-surface temperature change from 1850: the HadCRUT5 dataset. Journal of Geophysical Research, doi:10.1029/2019JD032361.

Zonal mean plot

Longitude-Latitude contour

Latitude-Pressure contour

Polar stereographic plot

[Note]
* Sea ice concentration data (HadISST.2.2.0.0) were downloaded from here in June 2018.
* Titchner, H.A., and N.A. Rayner, 2014: The Met Office Hadley Centre sea ice and sea surface temperature data set, version 2: 1. Sea ice concentrations, J. Geophys. Res. Atmos., 119, 2864-2889, doi:10.1002/2013JD020316.

Python tips

To read CSV file

fin = "sample.csv"                   # specify input file name
d = pd.read_csv(fin, header=None)    # read data without header
# d = pd.read_csv(fin, header=None)  # read data with 1-line header
x = d.values.T[0,:]  # pandas to ndarray for the 1st column
y = d.values.T[1,:]  # pandas to ndarray for the 2nd column

Not to export display

import matplotlib as mpl
mpl.use('Agg')

NetCDF tips

To read netCDF file with "xarray"

import xarray as xr
fin = "sample.nc"
f = xr.open_dataset(fin)

To read netCDF file with "netCDF4"

from netCDF4 import Dataset
fin = "sample.nc"
f = Dataset(fin, 'r', format='NETCDF4')
data = f.variables['t2m']
time = f.variables['time']
lat = f.variables['latitude']
lon = f.variables['longitude']

To read netCDF file with "PyNio"

import Nio
fin = "sample.nc"
f = Nio.open_file(fin, "r")
data = f.variables['t2m'][:,:,:]
time = f.variables['time'][:]
lat = f.variables['latitude'][:]
lon = f.variables['longitude'][:]

To read netCDF file with "CDMS"

import cdms2 as cdms
fin = "sample.nc"
f = cdms.open(fin)
data = f('t2m')
time = data.getTime()[:]
lat = data.getLatitude()[:]
lon = data.getLongitude()[:]

To compute seasonal mean from monthy mean

import cdutil
# annual mean
wgt = np.array([31., 28., 31., 30., 31., 30., 31., 31., 30., 31., 30., 31.])
data_ann = cdutil.averager(data, axis=0, weights=wgt)
#data_ann = np.average(datai, axis = 0, weights = wgt)
#data_ann = np.ma.average(datai, axis = 0, weights = wgt)
# DJF mean
wgt = np.array([31., 28., 0., 0., 0., 0., 0., 0., 0., 0., 0., 31.])
data_djf = cdutil.averager(data, axis=0, weights=wgt)

Others

import pyspharm    # NCAR SPHEREPACK library
import windspharm  # wind-related fields (https://ajdawson.github.io/windspharm/latest/)
from cdo import *  # CDO in Python (https://code.mpimet.mpg.de/projects/cdo/wiki/Cdo%7Brbpy%7D)