ensemble_ts_plot : plot time series --------------------------------------------------------------- Plot time series using a matplotlib python script. Allows a variety of controls on the plot (see below). The input is a CliMAF ensemble. This operator is an alternative to curves for time series. It provides the possibility to highlight a period on the plot (with a thicker line). We advise to use ts_plot for a more user-(python)friendly use of ensemble_ts_plot (allowing other inputs than CliMAF ensembles, and the use of python lists instead of comma-separated arguments). **References** : https://matplotlib.org/ **Provider / contact** : climaf at meteo dot fr **Inputs** (in the order of CliMAF call): - a CliMAF ensemble - optional arguments listed below Remarks : - this operator has been used on monthly and yearly data, not yet on daily outputs **Mandatory arguments**: a CliMAF ensemble **Optional arguments**: - ``colors``: colors separated by commas - ``lw``: lines thicknesses (commas separated) - ``alphas``: lines opacity (commas separated, between 0 and 1) - ``linestyles``: lines styles (commas separated) (see https://matplotlib.org/3.1.0/gallery/lines_bars_and_markers/linestyles.html for the values) - ``highlight_period``: Highlight a period on a time series (thicker line) ; provide the periods yearstart_yearend separated by commas (Ex: 1980_2005,1990_2000 to highlight the first period on the first dataset, and the second period on the second dataset) - ``highlight_period_lw``: Thickness of the highlighted period - ``min``, ``max``: minimum and maximum value - ``offset``, ``scale``: apply an offset and a scale to all your time series - ``xlim``: Provide the start date and end date to force the X axis. Ex: 1950-01-01,2005-12-31 - ``ylim``: Provide the interval for the Y axis - ``time_offset`` : Add a time offset to the beginning of the time series - ``text``: add some text in the plot; the user provides a triplet separared with commas x,y,text; separate the triplets with | if you want to provide multiple texts. Ex: x1,y1,text1|x2,y2,text2 - ``text_fontsize``: fontsize of the text (separate with commas if provide several - ``text_colors``: color of the text (separate with commas if provide several) - ``text_verticalalignment``: Vertical alignment of the text (separate with commas if provide several) - ``text_horizontalalignment``: Horizontal alignment of the text (separate with commas if provide several) - ``xlabel``, ``ylabel``: X and Y axis label - ``xlabel_fontsize``, ``ylabel_fontsize``: X and Y axis label size - ``tick_size``: Ticks size - ``fig_size``: Size of the figure in inches => width*height Ex: 15*5 - ``left_string``: Left string - ``right_string``: Right string - ``center_string``: Center string - ``left_string_fontsize``: Left string size - ``right_string_fontsize``: Right string size - ``center_string_fontsize``: Center string size - ``legend_colors``: legend colors separated by commas - ``legend_labels``: Labels of the legend - ``legend_xy_pos``: x,y Position of the corner of the box (by default = upper left corner). Example= "1.02,1" - ``legend_loc``: Choose the corner of the legend box to specify the position of the legend box; by default 2 (upper left corner), take values 1, 2, 3 or 4 (see resource loc of pyplot legend) - ``legend_fontsize``: Font size in the legend - ``legend_ncol``: Number of columns in the legend - ``legend_frame``: Draw the box around the legend? True/False - ``legend_lw``: Line widths (provide either one for all, or one by time series separated by commas) - ``draw_legend``: Draw the legend? True/False - ``append_custom_legend_to_default``: Append the custom legend to the default one? True/False # -- Control margins - ``left_margin``: Position of the left border of the figure in the plot - ``right_margin``: Position of the right border of the figure in the plot - ``bottom_margin``: Position of the bottom border of the figure in the plot - ``top_margin``: Position of the top border of the figure in the plot - ``horizontal_lines_values``: Y values for horizontal lines - ``horizontal_lines_styles``: Horizontal lines styles - ``horizontal_lines_lw``: Horizontal lines thickness - ``horizontal_lines_colors``: Horizontal lines colors - ``vertical_lines_values``: Y values for vertical lines - ``vertical_lines_styles``: vertical lines styles - ``vertical_lines_lw``: vertical lines thickness - ``vertical_lines_colors``: vertical lines colors # -- Default values default_left_string_fontsize = 30. default_center_string_fontsize = 20. default_right_string_fontsize = 20. default_tick_size = 15. default_xlabel_fontsize = 20. default_ylabel_fontsize = 20. **Outputs** : - main output : a PNG figure **Climaf call example**:: >>> # Two time series >>> j0=ds(project='example',simulation="AMIPV6ALB2G", variable="tas", frequency='monthly', period="1980") >>> j1=ds(project='example',simulation="AMIPV6ALB2G", variable="tas", frequency='monthly', period="1981") >>> ens=cens({'1980':j0, '1981':j1}) >>> tas_ga=space_average(ens) >>> # Most basic plot >>> p=ensemble_ts_plot(tas_ga) >>> # and with some customization >>> p=ensemble_ts_plot(tas_ga ,title="Surface Temperature global average", colors='blue,red', xlabel='Time', ylab='Temp.') **Side effects** : None **Implementation** : script based on matplotlib pyplot