Download source and data
Curves with Different Y Scales Example
# **************************** LICENSE START *********************************** # # Copyright 2020 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 # get data use_mars = False # False or True if use_mars: # retrieve data from MARS t_and_r = mv.retrieve( type = 'fc', date = 20201222, time = 12, step = [0, 'to', 240, 'by', 6], levelist = 1000, param = ['t', 'r'], grid = 'O48' ) mv.write('t_and_r_ts.grib', t_and_r) else: # read data from GRIB file t_and_r = mv.read("t_and_r_ts.grib") # filter t and r into separate fieldsets t = mv.read(data=t_and_r, param='t') r = mv.read(data=t_and_r, param='r') # extract arrays of values at the North Pole loc = [90, 0] tvals = mv.nearest_gridpoint(t, loc) rvals = mv.nearest_gridpoint(r, loc) ttimes = mv.valid_date(t) rtimes = mv.valid_date(r) # construct input visualisers with these x/y components t_curve = mv.input_visualiser( input_x_type = "date", input_date_x_values = ttimes, input_y_values = tvals) r_curve = mv.input_visualiser( input_x_type = "date", input_date_x_values = rtimes, input_y_values = rvals) # set up a Cartesian view for each curve, as they will use # different y-axis scales haxis = mv.maxis(axis_type = "date", axis_years_label_height = 0.4, axis_months_label_height = 0.4, axis_days_label_height = 0.4) t_vertical_axis = mv.maxis( axis_orientation = "vertical", axis_title_text = "temperature", axis_title_height = 0.4, axis_tick_label_hight = 0.4 ) t_view = mv.cartesianview( x_automatic = "on", x_axis_type = "date", y_automatic = "on", vertical_axis = t_vertical_axis, horizontal_axis = haxis) r_vertical_axis = mv.maxis( axis_orientation = "vertical", axis_position = "right", axis_title_text = "relative humidity", axis_title_height = 0.4, axis_tick_label_hight = 0.4 ) r_view = mv.cartesianview( x_automatic = "on", x_axis_type = "date", y_automatic = "on", vertical_axis = r_vertical_axis, horizontal_axis = haxis) # set up the pages that will use these views p1 = mv.plot_page(view=t_view) p2 = mv.plot_page(view=r_view) dw = mv.plot_superpage(pages=[p1, p2]) # plotting attributes common_graph = {'legend' : 'on', 'graph_line_thickness' : 2, 'graph_symbol' : 'on', 'graph_symbol_colour' : 'charcoal'} t_graph = mv.mgraph(common_graph, graph_line_colour='red', legend_user_text='t') r_graph = mv.mgraph(common_graph, graph_line_colour='olive', legend_user_text='r') # customise the legends legend_common = {'legend_display_type' : 'disjoint', 'legend_text_font_size' : 0.5, 'legend_box_mode' : "positional", 'legend_box_y_position' : 18.2, 'legend_box_x_length' : 5, 'legend_box_y_length' : 2 } t_legend = mv.mlegend(legend_common, legend_box_x_position=10) r_legend = mv.mlegend(legend_common, legend_box_x_position=15) # Define the output plot file mv.setoutput(mv.pdf_output(output_name='double_axis_2')) # Plot the data curves into the different views mv.plot(dw[0], t_curve, t_graph, t_legend, dw[1], r_curve, r_graph, r_legend)
Curves with Different Y Scales Example
# Metview Macro # **************************** LICENSE START *********************************** # # Copyright 2020 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 ************************************ # get data use_mars = 0 # 0 or 1 if use_mars then # retrieve data from MARS t_and_r = retrieve( type : 'fc', date : 20201222, time : 12, step : [0, 'to', 240, 'by', 6], levelist : 1000, param : ['t', 'r'], grid : 'O48' ) write('t_and_r_ts.grib', t_and_r) else # read data from GRIB file t_and_r = read("t_and_r_ts.grib") end if # filter t and r into separate fieldsets t = read(data: t_and_r, param: 't') r = read(data: t_and_r, param: 'r') # extract arrays of values at the North Pole loc = [90, 0] tvals = nearest_gridpoint(t, loc) rvals = nearest_gridpoint(r, loc) ttimes = valid_date(t) rtimes = valid_date(r) # construct input visualisers with these x/y components t_curve = input_visualiser( input_x_type : "date", input_date_x_values : ttimes, input_y_values : tvals) r_curve = input_visualiser( input_x_type : "date", input_date_x_values : rtimes, input_y_values : rvals) # set up a Cartesian view for each curve, as they will use # different y-axis scales haxis = mv.maxis(axis_type : "date", axis_years_label_height : 0.4, axis_months_label_height : 0.4, axis_days_label_height : 0.4) t_vertical_axis = maxis( axis_orientation : "vertical", axis_title_text : "temperature", axis_title_height : 0.4, axis_tick_label_hight : 0.4 ) t_view = cartesianview( x_automatic : "on", x_axis_type : "date", y_automatic : "on", vertical_axis : t_vertical_axis, horizontal_axis = haxis) r_vertical_axis = maxis( axis_orientation : "vertical", axis_position : "right", axis_title_text : "relative humidity", axis_title_height : 0.4, axis_tick_label_hight : 0.4 ) r_view = cartesianview( x_automatic : "on", x_axis_type : "date", y_automatic : "on", vertical_axis : r_vertical_axis, horizontal_axis = haxis) # set up the pages that will use these views p1 = plot_page(view : t_view) p2 = plot_page(view : r_view) dw = plot_superpage(pages : [p1, p2]) # plotting attributes common_graph = ('legend' : 'on', 'graph_line_thickness' : 2, 'graph_symbol': 'on', 'graph_symbol_colour' : 'charcoal') t_graph = mgraph(common_graph, graph_line_colour : 'red', legend_user_text : 't') r_graph = mgraph(common_graph, graph_line_colour : 'olive', legend_user_text : 'r') # customise the legends legend_common = (legend_display_type : 'disjoint', legend_text_font_size : 0.5, legend_box_mode : "positional", legend_box_y_position : 18.2, legend_box_x_length : 5, legend_box_y_length : 2 ) t_legend = mlegend(legend_common, legend_box_x_position: 10) r_legend = mlegend(legend_common, legend_box_x_position: 15) # Define the output plot file setoutput(pdf_output(output_name : 'double_axis_2')) # Plot the data curves into the different views plot(dw[1], t_curve, t_graph, t_legend, dw[2], r_curve, r_graph, r_legend)