#Metview Macro
# **************************** LICENSE START ***********************************
#
# Copyright 2019 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 ERA5 monthly mean O3 on 70 hPa
nc = read("era5_ozone_1999.nc")
# this NetCDF data has the following structure:
#
# dimensions:
# longitude = 1440 ;
# latitude = 721 ;
# time = 4 ;
#variables:
# float longitude(longitude) ;
# float latitude(latitude) ;
# int time(time) ;
# time:units = "hours since 1900-01-01 00:00:00.0" ;
# short o3(time, latitude, longitude) ;
# o3:units = "kg kg**-1" ;
# o3:long_name = "Ozone mass mixing ratio" ;
# define contour shading
cont = mcont(
legend : "on",
contour : "off",
contour_max_level : 4E-6,
contour_min_level : 5E-7,
contour_label : "off",
contour_shade : "on",
contour_shade_colour_method : "palette",
contour_shade_method : "area_fill",
contour_shade_palette_name : "m_purple_9"
)
# define coastlines
coastlines = mcoast(
map_coastline_thickness : 2,
map_grid_colour : "RGB(0.349,0.349,0.349)",
map_label : "off"
)
# define goegraphical view
view = geoview(
map_projection : "polar_stereographic",
map_area_definition : "corners",
map_hemisphere : "south",
area : [-5.23,46.28,-5.72,-132.72],
coastlines : coastlines
)
# create a 2x2 plot layout with the defined geoview
dw = plot_superpage(pages: mvl_regular_layout(view,2,2,1,1,[5,100,10,100]))
# define month names for plot titles
months = ['JAN', 'APR', 'JUL', 'OCT']
# we build the plot object for each map in a loop
p_obj = nil
for i =1 to 4 do
# define netcdf plotting
vis = netcdf_visualiser(
netcdf_plot_type : "geo_matrix",
netcdf_latitude_variable : "latitude",
netcdf_longitude_variable : "longitude",
netcdf_value_variable : "o3",
netcdf_dimension_setting_method : "index",
netcdf_dimension_setting : ["time:" & (i-1)],
netcdf_data : nc
)
# define title
title = mtext(
text_lines : [
"<netcdf_info variable='o3' attribute='long_name'/> " &
"[<netcdf_info variable='o3' attribute='units'/>] 70 hPa - 1999 " &
months[i]],
text_font_size : 0.3
)
# add current plot definition to the plot object
p_obj = p_obj & [dw[i], vis, cont, title]
end for
# define output
setoutput(pdf_output(output_name : 'nc_era5_ozone'))
# generate plot
plot(p_obj) |
|
# **************************** LICENSE START ***********************************
#
# Copyright 2019 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 ERA5 monthly mean O3 on 70 hPa
nc = mv.read("era5_ozone_1999.nc")
# this NetCDF data has the following structure:
#
# dimensions:
# longitude = 1440 ;
# latitude = 721 ;
# time = 4 ;
#variables:
# float longitude(longitude) ;
# float latitude(latitude) ;
# int time(time) ;
# time:units = "hours since 1900-01-01 00:00:00.0" ;
# short o3(time, latitude, longitude) ;
# o3:units = "kg kg**-1" ;
# o3:long_name = "Ozone mass mixing ratio" ;
# define contour shading
cont = mv.mcont(
legend = "on",
contour = "off",
contour_max_level = 4E-6,
contour_min_level = 5E-7,
contour_label = "off",
contour_shade = "on",
contour_shade_colour_method = "palette",
contour_shade_method = "area_fill",
contour_shade_palette_name = "m_purple_9"
)
# define coastlines
coastlines = mv.mcoast(
map_coastline_thickness = 2,
map_grid_colour = "RGB(0.349,0.349,0.349)",
map_label = "off"
)
# define goegraphical view
view = mv.geoview(
map_projection = "polar_stereographic",
map_area_definition = "corners",
map_hemisphere = "south",
area = [-5.23,46.28,-5.72,-132.72],
coastlines = coastlines
)
# create a 2x2 plot layout with the defined geoview
dw = mv.plot_superpage(pages=mv.mvl_regular_layout(view,2,2,1,1,[5,100,10,100]))
# define month names for plot titles
months = ['JAN', 'APR', 'JUL', 'OCT']
# we build the plot object for each map in a loop
p_obj = []
for i in range(4):
# define netcdf plotting
vis = mv.netcdf_visualiser(
netcdf_plot_type = "geo_matrix",
netcdf_latitude_variable = "latitude",
netcdf_longitude_variable = "longitude",
netcdf_value_variable = "o3",
netcdf_dimension_setting_method = "index",
netcdf_dimension_setting = ["time:" + str(i)],
netcdf_data = nc
)
# define title
title = mv.mtext(
text_lines = [
"<netcdf_info variable='o3' attribute='long_name'/> " +
"[<netcdf_info variable='o3' attribute='units'/>] 70 hPa - 1999 " +
months[i]],
text_font_size = 0.3
)
# add current plot definition to the plot object
p_obj.append([dw[i], vis, cont, title])
# define output
mv.setoutput(mv.pdf_output(output_name = 'nc_era5_ozone'))
# generate plot
mv.plot(p_obj) |
|
|