20.1. Description
The Taylor diagram was invented byKarl E. Taylor in 1994 and is useful in quantifying the correspondence betweenmodels and a “reference” based on the Pearson correlation coefficient, the root-mean-squareerror (RMSE), and the standard deviation. Taylor diagrams have been widely used for climate and otherEarth science models but can be useful in the evaluation of models from other domains.
For more information on Taylor diagrams, please refer to theMETviewer documentation.
Examples of Taylor diagrams are shown below.
A Taylor diagram of sample Downward Longwave Radiative Flux (DLWR) data displaying only positive correlationvalues:
![20. Taylor Diagram — METplotpy v3.0.0-beta5 documentation (1) 20. Taylor Diagram — METplotpy v3.0.0-beta5 documentation (1)](https://i0.wp.com/metplotpy.readthedocs.io/../_images/taylor_pos_corr_plot.png)
A Taylor diagram of sample Downward Longwave Radiative Flux (DLWR) data displaying negative andpositive correlation values:
![20. Taylor Diagram — METplotpy v3.0.0-beta5 documentation (2) 20. Taylor Diagram — METplotpy v3.0.0-beta5 documentation (2)](https://i0.wp.com/metplotpy.readthedocs.io/../_images/taylor_neg_and_pos_corr_plot.png)
20.2. Example
20.2.1. Sample Data
The continuous statistics line type CNT, from the MET tool’s Point-Stat or Grid-Stattools is required for creating a Taylor diagram, where the data is text output in columnar format andthe FSTDEV, OSTDEV, and PR_CORR statistics are available for plotting.
The sample data used to create these plots is available in the METplotpyrepository, where the Taylor diagram scripts are located:
$METPLOTPY_BASE/test/taylor_diagram/dlwr_sample.data
$METPLOTPY_BASE is the directory where the METplotpy code is saved:
e.g.
/usr/path/to/METplotpy if the source code was cloned or forked from the Github repository
or
/usr/path/to/METplotpy-x.y.z if the source code was downloaded as a zip or gzip’d tar file from the Release link ofthe Github repository. The x.y.z is the release number.
20.2.2. Configuration Files
The Taylor diagram utilizes YAML configuration files to indicate whereinput data is located and to set plot attributes. These plot attributescorrespond to values that can be set via the METviewer tool. YAML is arecursive acronym for “YAML Ain’t Markup Language” and according toyaml.org,it is a “human-friendly data serialization language. It is commonly used forconfiguration files and in applications where data is being stored ortransmitted. Two configuration files are required. The first is adefault configuration file, taylor_diagram_defaults.yaml,which is found in the$METPLOTPY_BASE/metplotpy/plots/config directory.$METPLOTPY_BASE indicates the directory where the METplotpysource code has been saved. All defaultconfiguration files are located in the$METPLOTPY_BASE/metplotpy/plots/config directory.Default configuration files are automatically loaded by theplotting code and do not need to be explicitly specified whengenerating a plot.
The second required configuration file is a user-supplied “custom”configuration file. This file is used to customize/override the defaultsettings in the taylor_diagram_defaults.yaml file. The customconfiguration file can be an empty file if all default settings are tobe applied.
20.3. METplus Configuration
20.3.1. Default Configuration File
The following is the mandatory, taylor_diagram_defaults.yamlconfiguration file, which serves as a starting point for creating aTaylor diagram plot, as it represents the default values set in METviewer.
NOTE: This default configuration file is automatically loaded bytaylor_diagram.py.
---# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# "Default" settings for the Taylor diagram plot# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# caption settingsplot_caption: "Caption -Taylor Diagram default settings"caption_weight: 4caption_col: "#333333"# relative magnification of caption sizecaption_size: "8"# axis perpendicular location adjustment# (up/down)caption_offset: 0# axis parallel location adjustment (left/right)caption_align: 0# hexadecimal or color namecolors: - "#ff0000" # red - "#ffd400" # goldenrod - "#55ff00" # lime green - "#00ff7f" # green - "#00aaff" # light blue - "#1500ff" # royal blue - "#7f00ff" # purple# Not supported, set as fcst_var under the series_val_1 settingfcst_var_val_1: {}legend_box: 'box'legend_inset: x: 0.1 y: -0.25legend_ncol: 4legend_size: 0.8log_filename: STDOUTlog_level: ERROR# Turn on/off plotting of specific points/seriesplot_disp: - 'True' - 'True' - 'True' - 'True' - 'True' - 'True' - 'True'# output file/plotplot_filename: ./taylor_diagram_default.png# size and resolution of the plot.plot_width: 11plot_height: 9# plot resolution in dpi (dots per inch)plot_res: 72series_order: - 1 - 2 - 3 - 4 - 5 - 6 - 7# Other supported symbols: small circle = ".", ring/hexagon = "H", rhombus/diamond="d"series_symbols: # point - "d" - "." - "." - "." - "." - "." - "."series_val_1: # series_var_1 model: - suite3_MEDIAN # series_var2 vx_mask: - Bondville - Desert_Rock - Fort_Peck - Goodwin_Creek - Penn_State - Sioux_Falls - Table_Mountain fcst_var: - DLWRF# input filestat_input: ../../../test/taylor_diagram/plot_dlwr_sample.data# Draw the standard deviation arcs on the diagramtaylor_show_gamma: 'True'# Show only positive values of correlationtaylor_voc: 'False'title: Downward Longwave Radiative Flux Taylor Diagramtitle_weight: 4title_size: 1.8# legend settingsuser_legend: - "" - "" - "" - "" - "" - "" - ""## UNSUPPORTED or UNUSED settings BUT REQUIRED/USED by METviewer# Do not modify the settings below this section## Unsupported actions by Matplotlib.# Matplotlib align choices are left, right, center (default) and# offset is automatically chosen to avoid labels and ticks on the topmost# x-axis# To work around what METviewer is expecting (a numerical value),# set title_align to -1.5 for 'left', 1.5 for 'right', any other value for 'center'title_align: 0.5title_offset: -2# x-axis ticks#these are unsupportedxtlab_orient: 1xtlab_size: 1xtlab_perp: -0.75xtlab_horiz: 0.5xtlab_freq: 0x2tlab_orient: 1x2tlab_size: 0.8x2tlab_perp: 1x2tlab_horiz: 0.5# y-axis ticks# these are unsupportedytlab_perp: 0.5ytlab_horiz: 0.5y2tlab_orient: 1y2tlab_perp: 0.5y2tlab_horiz: 0.5y2tlab_size: 1# second y-axis ticks# these are unsupported as this diagram doesn't have# a second y-axisy2lab_size: 1y2lab_offset: 1y2lab_align: 0.5# second x-axis settings, not necessary# for this diagram, expected by METviewerx2lab_size: 0.8x2lab_offset: -0.5x2lab_align: 0.5# magnificationcex: 1# margins (Matplotlib doesn't have this level of granularity for margins)mar: - 8 - 4 - 5 - 4# create html relevant only for Plotly interactivity in METviewer, not# applicable for Matplotlib plotting.create_html: 'False'# Event equalization to check for missing data# not applicable for this plot, but METviewer expects this# settingevent_equal: 'False'dump_points_1: 'False'dump_points_2: 'False'# not relevant since there aren't any intermediate files being# createdpoints_path: ''vert_plot: 'False'x_reverse: 'False'num_stats: 'False'indy1_stag: 'False'indy2_stag: 'False'sync_axes: 'False'log_y1: 'False'log_y2: 'False'# used in the calculation of confidence intervals but not used herevariance_inflation_factor: Falseseries_type: - "b" - "b" - "b" - "b" - "b" - "b" - "b"# line width (no lines in Taylor diagram, only points)lwd: - 5 - 5 - 5 - 5 - 5 - 5 - 5# x-axis labelsxaxis: Standard Deviationxlab_size: 1#up-down positioningxlab_align: .5#left-right positioningxlab_offset: 2# text weight: plain text, bold, italic, bold italicxlab_weight: 1# y-axis labelsyaxis_1: Standard Deviationylab_size: 1#left-right positioningylab_align: 0.5#up-down positioningylab_offset: -2# text weight: plain text, bold, italic, bold italicylab_weight: 1# y-axis ticksytlab_orient: 1ytlab_size: 1.3# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!# The underlying Taylor diagram (grid lines, etc.)# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!## These are expected/used by METviewer but cannot# be applied to the underlying Taylor diagram plot. Grid# linestyle and colors cannot be changed.grid_lty: "--"# Hexadecimal value or color namegrid_col: "#cccccc"grid_linewidth: 1grid_x: "listX"# other option is mm (millimeters)plot_units: in# only png plots are generated, this setting is expected by METviewerplot_type: png16mplot_ci:# No confidence intervals plotted in Taylor diagram, so these settings have no effect - None - None - None - None - None - None - Nonecon_series:# Only useful for line plots where consecutive points may be interspersed with NA values# these values have no use for the Taylor diagram. - 1 - 1 - 1 - 1 - 1 - 1 - 1# not relevant for this plot, these values are expected by METviewershow_signif: - 'False' - 'False' - 'False' - 'False' - 'False' - 'False' - 'False'
In the default config file, logging is set to stdout and the log level is ERROR (i.e. only log messagesof type ERROR will be logged). If the log_filename and log_level arenot specified in the custom configuration file, these settings will be used.
20.3.2. Custom Configuration File
A second, mandatory configuration file is required, which isused to customize the settings to the Taylor diagram plot.The taylor_diagram_custom.yaml file is included with thesource code and looks like the following:
---# custom config file to override some of the settings in the# default config file taylor_diagram_defaults.yamlstat_input: !ENV '${TEST_DIR}/plot_dlwr_sample.data'plot_filename: !ENV '${TEST_DIR}/taylor_diagram_custom.png'# change the caption textplot_caption: "Custom caption"# change the titletitle: Custom Taylor Diagram - DLWRtitle_weight: 1title_size: 1.2# change the symbols# Other supported symbols: small circle = ".", ring/hexagon = "H", rhombus/diamond="d"series_symbols: # point - "H" - "." - "." - "d" - "." - "." - "H"# To save your log output to a file, specify a path and filename and uncomment the line below. Make sure you have# permissions to the directory you specify. The default, as specified in the default config file is stdout.#log_filename: ./taylor_diagram.log# To change the log level, specify a log level: debug, info, warning, error and uncomment the line below.# The debug and info log levels will produce more log output.#log_level: WARNING
Copy this custom config file from the directory where the sourcecode was saved to the working directory:
cp $METPLOTPY_BASE/test/taylor_diagram/taylor_diagram_custom.yaml $WORKING_DIR/taylor_diagram_custom.yaml
Modify the stat_input setting in the$METPLOTPY_BASE/test/taylor_diagram/taylor_diagram_custom.yamlfile to explicitly point to the$METPLOTPY_BASE/test/taylor_diagram/taylor_diagramdirectory (where the custom config files and sample data reside).Replace the relative path ./dlwr_sample.datawith the full path$METPLOTPY_BASE/test/taylor_diagram/dlwr_sample.data(including replacing $METPLOTPY_BASE with the full path to the METplotpyinstallation on the system).Modify the plot_filename setting to point to the output path where theplot will be saved, including the name of the plot.
For example:
stat_input: /username/myworkspace/METplotpy/test/taylor_diagram/dlwr_sample.data
plot_filename: /username/working_dir/output_plots/taylor_diagram_custom.png
This is where /username/myworkspace/METplotpy is $METPLOTPY_BASE and/username/working_dir is $WORKING_DIR. Make sure that the$WORKING_DIR directory that is specified exists and has theappropriate read and write permissions. The path listed forplot_filename may be changed to the output directory of one’s choosing.If this is not set, then theplot_filename setting specified in the$METPLOTPY_BASE/metplotpy/plots/config/taylor_diagram_defaults.yamlconfiguration file will be used.
No intermediate files (i.e. .points1 file) are generated by the Taylor diagram.The dump_points_1 setting is expected by METviewer and is set to False in the configuration file.
To save the log output to a file, uncomment the log_filename entry and specify the path andname of the log file. Select a directory with the appropriate read and writeprivileges. To modify the verbosity of logging than what is set in the default configfile, uncomment the log_level entry and specify the log level (debug and info are higher verbosity, warning and errorare lower verbosity).
20.3.3. Using Defaults
To use the default settings defined in thetaylor_diagram_defaults.yamlfile, specify a minimal custom configuration file(minimal_taylor_diagram_defaults.yaml), which consists of onlya comment block, but it can be any empty file (write permissions for theoutput filename path corresponding to the plot_filename setting inthe default configuration file will be needed. Otherwise, specifya plot_filename in the minimal_taylor_diagram.yaml file):
# minimal yaml file, replace the path-to to thestat_input: path-to/plot_dlwr_sample.dataplot_filename: path-to/plot_dlwr_sample.png
Copy this file to the working directory:
cp $METPLOTPY_BASE/test/taylor_diagram/minimal_taylor_diagram.yaml $WORKING_DIR/minimal_taylor_diagram.yaml
If the stat_input and plot_filename settings (output file/plot path) are missing, addthese settings to the $WORKING_DIR/minimal_taylor_diagram.yamlfile (anywhere below the comment block). The stat_input settingexplicitly indicates where the sample data and custom configurationfiles are located. Set the stat_input to$METPLOTPY_BASE/test/taylor_diagram/dlwr_sample.data and set theplot_filename to$WORKING_DIR/output_plots/taylor_diagram_default.png:
stat_input: $METPLOTPY_BASE/test/taylor_diagram/dlwr_sample.data
plot_filename: $WORKING_DIR/output_plots/taylor_diagram_default.png
$WORKING_DIR is the working directory where all ofthe custom configuration files are being saved.NOTE: The plot_filename (output directory) may be specifiedto a directory other than the $WORKING_DIR/output_plots, as long asit is an existing directory where the author has read and write permissions.
20.4. Run from the Command Line
To generate a default Taylor diagram (i.e. using settings in thetaylor_diagram_defaults.yaml configuration file),perform the following:
If using the conda environment, verify the conda environmentis running and has has the required Python packages outlined in therequirements section.
Set the METPLOTPY_BASE environment variable to point to$METPLOTPY_BASE.
For the ksh environment:
export METPLOTPY_BASE=$METPLOTPY_BASE
For the csh environment:
setenv METPLOTPY_BASE $METPLOTPY_BASE
Replacing the $METPLOTPY_BASE with the directory where theMETplotpy source code was saved.
Run the following on the command line:
python $METPLOTPY_BASE/metplotpy/plots/taylor_diagram/taylor_diagram.py $WORKING_DIR/minimal_taylor_diagram.yaml
This will create a PNG file, taylor_diagram_default.png,in the directory that was specified in the plot_filenamesetting of the minimal_taylor_diagram.yaml config file:
To generate a slightly modified, customized plot, run thecommand (below) using the taylor_diagram_custom.yaml file:
python $METPLOTPY_BASE/metplotpy/plots/taylor_diagram/taylor_diagram.py $WORKING_DIR/taylor_diagram_custom.yaml
A taylor_diagram_custom.png output file will be created inthe directory that was specified in the plot_filename config settingin the taylor_diagram_custom.yaml config file. This customized plot has a differentoutput filename, title text, title size, title font style, caption text, and different symbols than the defaultplot, as shown below:
![20. Taylor Diagram — METplotpy v3.0.0-beta5 documentation (4) 20. Taylor Diagram — METplotpy v3.0.0-beta5 documentation (4)](https://i0.wp.com/metplotpy.readthedocs.io/../_images/taylor_diagram_custom.png)