Metview's documentation is now on readthedocs!

Download source and data


Time Series from GRIB Example
# Metview Macro

#  **************************** LICENSE START ***********************************
# 
#  Copyright 2018 ECMWF. This software is distributed under the terms
#  of the Apache License version 2.0. In applying this license, ECMWF does not
#  waive the privileges and immunities granted to it by virtue of its status as
#  an Intergovernmental Organization or submit itself to any jurisdiction.
# 
#  ***************************** LICENSE END ************************************



# read a set of t2m and t2d forecast steps from a GRIB file
both_t = read('t2m_td.grib')

# filter the t2m and dewpoint t into separate fieldsets (and K->C)
t2m = read(data : both_t, param : '2t') - 273.15
t2d = read(data : both_t, param : '2d') - 273.15

# for each temperature type, get the weighted averages over an area
# - returns a list of numbers, one for each field
area = [75,-12.5,35,42.5] # N,W,S,E
t2m_int = integrate(t2m, area)
t2d_int = integrate(t2d, area)
print('t2m averages: ', t2m_int)
print('t2d averages: ', t2d_int)

# get the valid times for each field
times_t2m = valid_date(t2m)
times_t2d = valid_date(t2d)

# set up the Cartesian view to plot into
# including customised axes so that we can change the size
# of the labels and add titles
haxis = maxis(axis_type : 'date',
                 axis_years_label_height : 0.45,
                 axis_months_label_height : 0.45,
                 axis_days_label_height : 0.45)

vaxis = maxis(axis_title_text : 'Temperature, K',
                 axis_title_height : 0.5)

ts_view = cartesianview(
    x_automatic : "on",
    x_axis_type : "date",
    y_automatic : "on",
    horizontal_axis : haxis,
    vertical_axis   : vaxis)

# create the curves for both parameters
curve_2t = input_visualiser(
    input_x_type        : "date",
    input_date_x_values : times_t2m,
    input_y_values      : t2m_int)

curve_2d = input_visualiser(
    input_x_type        : "date",
    input_date_x_values : times_t2d,
    input_y_values      : t2d_int)

# set up visual styling for each curve
common_graph = ('graph_line_thickness' : 2, 'legend' : 'on')
graph_2t = mgraph(common_graph, graph_line_colour : 'black', legend_user_text : 't2m')
graph_2d = mgraph(common_graph, graph_line_colour : 'red',   legend_user_text : 't2d')

# customise the legend
legend = mlegend(legend_display_type : 'disjoint', legend_text_font_size : 0.5)

# define the output plot file
setoutput(pdf_output(output_name : 'time_series'))

# plot everything into the Cartesian view
plot(ts_view, curve_2t, graph_2t, curve_2d, graph_2d, legend)
Time Series from GRIB Example
# Metview Example

#  **************************** LICENSE START ***********************************
# 
#  Copyright 2018 ECMWF. This software is distributed under the terms
#  of the Apache License version 2.0. In applying this license, ECMWF does not
#  waive the privileges and immunities granted to it by virtue of its status as
#  an Intergovernmental Organization or submit itself to any jurisdiction.
# 
#  ***************************** LICENSE END ************************************

import metview as mv

# read a set of t2m and t2d forecast steps from a GRIB file
both_t = mv.read("t2m_td.grib")

# filter the t2m and dewpoint t into separate fieldsets (and K->C)
t2m = mv.read(data = both_t, param = "2t") - 273.15
t2d = mv.read(data = both_t, param = "2d") - 273.15

# for each temperature type, get the weighted averages over an area
# - returns a list of numbers, one for each field
area = [75,-12.5,35,42.5] # N,W,S,E
t2m_int = mv.integrate(t2m, area)
t2d_int = mv.integrate(t2d, area)
print("t2m averages: ", t2m_int)
print("t2d averages: ", t2d_int)

# get the valid times for each field
times_t2m = mv.valid_date(t2m)
times_t2d = mv.valid_date(t2d)

# set up the Cartesian view to plot into
# including customised axes so that we can change the size
# of the labels and add titles
haxis = mv.maxis(axis_type = "date",
                 axis_years_label_height = 0.45,
                 axis_months_label_height = 0.45,
                 axis_days_label_height = 0.45)

vaxis = mv.maxis(axis_title_text = "Temperature, K",
                 axis_title_height = 0.5)

ts_view = mv.cartesianview(
    x_automatic = "on",
    x_axis_type = "date",
    y_automatic = "on",
    horizontal_axis = haxis,
    vertical_axis   = vaxis)

# create the curves for both parameters
curve_2t = mv.input_visualiser(
    input_x_type        = "date",
    input_date_x_values = times_t2m,
    input_y_values      = t2m_int)

curve_2d = mv.input_visualiser(
    input_x_type        = "date",
    input_date_x_values = times_t2d,
    input_y_values      = t2d_int)

# set up visual styling for each curve
common_graph = {"graph_line_thickness" : 2, "legend" : 'on'}
graph_2t = mv.mgraph(common_graph, graph_line_colour = 'black', legend_user_text = 't2m')
graph_2d = mv.mgraph(common_graph, graph_line_colour = 'red',   legend_user_text = 't2d')

# customise the legend
legend = mv.mlegend(legend_display_type = "disjoint", legend_text_font_size = 0.5)

# define the output plot file
mv.setoutput(mv.pdf_output(output_name = "time_series"))

# plot everything into the Cartesian view
mv.plot(ts_view, curve_2t, graph_2t, curve_2d, graph_2d, legend)