Metview's documentation is now on readthedocs!

Download source and data


ODB Scatterplot 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 ************************************

# ------------------------------------------------------------------
# Tags: ODB,Cartesian
# Title: ODB scatterplot with binning
# Description: Demonstrates how to generate a scatterpot from ODB 
#              using binning.
# ------------------------------------------------------------------


use_mars = 0
if use_mars then
    #  retrieve from MARS - for AMSUA channel 5 (all satellites)
    db = retrieve(
            type     : "mfb",
            repres   : "bu",
            obsgroup : "amsua",
            time     : 00,
            date     : -2,
            filter   : "select an_depar@body,fg_depar@body " &
                       "where vertco_reference_1=5"
        )
else
    db = read('amsua.odb')
end if


# Define binning - with 100 bins both in the horizontal and vertical axes
bin_100 = binning(
        binning_x_count : 100,
        binning_y_count : 100
        )

# Define visualiser for scatterplot with binning
bin_plot = odb_visualiser(
        odb_plot_type      : "xy_binning",
        odb_x_variable     : "fg_depar@body",
        odb_y_variable     : "an_depar@body",
        odb_value_variable : "",
        #odb_where          : "vertco_reference_1@body =5 ",
        odb_data           : db,
        odb_binning        : bin_100
        )

# Define grid shading - the binned dataset will be defined on a grid
bin_grid_shade = mcont(
        legend                         : "on",
        contour                        : "off",
        contour_min_level              : 1,
        contour_shade_min_level        : 1,
        contour_level_count            : 20,
        contour_shade                  : "on",
        contour_shade_technique        : "grid_shading",
        contour_shade_method           : "area_fill",
        contour_shade_max_level_colour : "red",
        contour_shade_min_level_colour : "blue",
        contour_shade_colour_direction : "clockwise"
        )

# Define title
title = mtext(
        text_line_count : 1,
        text_line_1     : "Sensor: AMSU-A  Channel: 5 Param: Tb"
        )

# Define horizontal axis
hor_axis = maxis(
        axis_position         : "left",
        axis_title_text       : "fg_depar (K)",
        axis_tick_interval    : 0.5,
        axis_minor_tick       : "on",
        axis_minor_tick_count : 4,
        axis_grid             : "on",
        axis_grid_colour      : "black",
        axis_grid_line_style  : "dot"
        )

# Define vertical axis 
ver_axis = maxis(
        axis_orientation      : "vertical",
        axis_title_text       : "an_depar (K)",
        axis_tick_interval    : 0.5,
        axis_minor_tick       : "on",
        axis_minor_tick_count : 4,
        axis_grid             : "on",
        axis_grid_colour      : "black",
        axis_grid_line_style  : "dot"
        )

# Define Catresian view
scatter_view = cartesianview(
        x_min              : -1,
        x_max              : 1,
        y_min              : -1,
        y_max              : 1,
        subpage_y_position : 12.5,
        subpage_y_length   : 75,
        horizontal_axis    : hor_axis,
        vertical_axis      : ver_axis
        )


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

# Plot
plot(scatter_view,bin_plot,bin_grid_shade,title)
ODB Scatterplot 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 ************************************

# ------------------------------------------------------------------
# Tags: ODB,Cartesian
# Title: ODB scatterplot with binning
# Description: Demonstrates how to generate a scatterpot from ODB 
#              using binning.
# ------------------------------------------------------------------

import metview as mv

use_mars = 0
if use_mars:
    #  retrieve from MARS - for AMSUA channel 5 (all satellites)
    db = mv.retrieve(
            type     = "mfb",
            repres   = "bu",
            obsgroup = "amsua",
            time     = 00,
            date     = -2,
            filter   = "select an_depar@body,fg_depar@body " +
                       "where vertco_reference_1=5"
            )
else:
    db = mv.read("amsua.odb")

# Define binning - with 100 bins both in the horizontal and vertical axes
bin_100 = mv.binning(
        binning_x_count = 100,
        binning_y_count = 100
        )

# Define visualiser for scatterplot with binning
bin_plot = mv.odb_visualiser(
        odb_plot_type      = "xy_binning",
        odb_x_variable     = "fg_depar@body",
        odb_y_variable     = "an_depar@body",
        odb_value_variable = "",
        #odb_where          = "vertco_reference_1@body =5 ",
        odb_data           = db,
        odb_binning        = bin_100
        )

# Define grid shading - the binned dataset will be defined on a grid
bin_grid_shade = mv.mcont(
        legend                         = "on",
        contour                        = "off",
        contour_min_level              = 1,
        contour_shade_min_level        = 1,
        contour_level_count            = 20,
        contour_shade                  = "on",
        contour_shade_technique        = "grid_shading",
        contour_shade_method           = "area_fill",
        contour_shade_max_level_colour = "red",
        contour_shade_min_level_colour = "blue",
        contour_shade_colour_direction = "clockwise"
        )

# Define title
title = mv.mtext(
        text_line_count = 1,
        text_line_1     = "Sensor: AMSU-A  Channel: 5 Param: Tb"
        )

# Define horizontal axis
hor_axis = mv.maxis(
        axis_position         = "left",
        axis_title_text       = "fg_depar (K)",
        axis_tick_interval    = 0.5,
        axis_minor_tick       = "on",
        axis_minor_tick_count = 4,
        axis_grid             = "on",
        axis_grid_colour      = "black",
        axis_grid_line_style  = "dot"
        )

# Define vertical axis 
ver_axis = mv.maxis(
        axis_orientation      = "vertical",
        axis_title_text       = "an_depar (K)",
        axis_tick_interval    = 0.5,
        axis_minor_tick       = "on",
        axis_minor_tick_count = 4,
        axis_grid             = "on",
        axis_grid_colour      = "black",
        axis_grid_line_style  = "dot"
        )

# Define Catresian view
scatter_view = mv.cartesianview(
        x_min              = -1,
        x_max              = 1,
        y_min              = -1,
        y_max              = 1,
        subpage_y_position = 12.5,
        subpage_y_length   = 75,
        horizontal_axis    = hor_axis,
        vertical_axis      = ver_axis
        )


# define the output plot file
mv.setoutput(mv.pdf_output(output_name = 'odb_scatterplot_binning'))

# Plot
mv.plot(scatter_view,bin_plot,bin_grid_shade,title)