Plots
METviewer turns the dense ASCII statistics that MET writes into pictures. Once your verification numbers are loaded into its database, you pick a plot type, choose a statistic and an axis, and METviewer renders a figure. This page walks the major plot families one at a time: what question each answers, what its axes mean, and what “good” versus “bad” looks like at a glance.
How to think about a plot
Section titled “How to think about a plot”Every METviewer plot is built from the same raw material: rows of statistics that MET’s
Point-Stat and Grid-Stat tools wrote out, grouped into named
line types. A line type is just a category of output — for example,
CNT holds continuous statistics like RMSE and correlation, CTC
holds the four counts of a 2×2 yes/no contingency table, and PCT holds the
probabilistic contingency table for probability forecasts. Which plots you can
draw depends entirely on which line types you have.
Three ideas recur across the whole gallery, so it is worth naming them once:
Independent variable (the X axis you choose) — The thing you are varying — most often forecast lead time (how far ahead the forecast was valid), but also date, or threshold. Series, bar, box, and spread/skill plots all let you pick it.
Series variable (what splits the data into separate lines) — A grouping that draws as its own line or color — typically the model or an ensemble member, so two systems can be compared on one figure.
Fixed values (the filter that keeps comparisons honest) — Constraints you pin down — a single verification region (VX_MASK),
forecast variable (FCST_VAR), level, or threshold — so METviewer does not
blend together numbers that should never be averaged.
Plot cheat-sheet
Section titled “Plot cheat-sheet”The whole gallery on one screen: what each plot is for, and what its axes carry.
Acronyms used below: POD = probability of detection (hit rate); POFD = probability of false detection (false-alarm rate); FAR = false-alarm ratio, so the success ratio is 1 − FAR.
| Plot type | Question it answers | Key axes |
|---|---|---|
| Series / line | How does a statistic change as I vary lead time (or date / threshold)? | X = independent variable · Y = statistic value |
| Bar | How do a statistic’s values compare across discrete categories? | X = category (date / lead / threshold) · Y = statistic value |
| Box-and-whisker | What is the spread / distribution of a statistic in each category? | X = category · Y = statistic (median, quartiles, whiskers, outliers) |
| Reliability (attributes) | When I forecast probability p, does the event happen about p of the time? | X = forecast probability · Y = observed relative frequency |
| ROC | Can my probability forecast discriminate events from non-events? | X = false-alarm rate (POFD) · Y = hit rate (POD) |
| Performance (CSI) | How does a yes/no forecast trade off detection against false alarms? | X = success ratio (1−FAR) · Y = probability of detection (POD) |
| Taylor diagram | How close is the forecast pattern to observations, on three stats at once? | radius = std dev · angle = correlation · distance to ref = RMSE |
| Spread vs. skill | Is my ensemble’s spread a fair estimate of its own error? | X = independent variable · Y = spread and skill (RMSE) together |
| Economic value (ECLV) | For what cost/loss ratios does my forecast beat climatology? | X = cost/loss ratio · Y = economic value |
| Scorecard | Across many variables, regions and leads, where does model A beat model B — significantly? | grid: rows = stats/vars · columns = region × lead · cells = colored significance |
Two further families catalogued on the METviewer overview — Contour plots and Equivalence Testing Bounds — are not given their own deep-dive entry here; this gallery covers the most commonly read families rather than every plot type.
Series & line plots
Section titled “Series & line plots”The workhorse of verification. A series plot is, in the guide’s own words, a special case of a scatter plot where the dependent value is connected from one value of the independent variable to the next with a line. In practice that means: pick a statistic for the Y axis, pick an independent variable for the X axis, and watch the line.
The classic example is a statistic versus forecast lead time. You put a statistic such as
frequency bias (FBIAS) on Y and lead time (3 h, 6 h, … 36 h) on X. Choose a
series variable — say model or ensemble member — and each one draws as its own line, so you
can compare systems directly. The source example plots frequency bias for seven HRRR
ensemble members across 3–36 h leads.
- What good looks like: depends on the statistic. For a bias-style statistic you want the line near its perfect value (1.0 for frequency bias, 0 for mean error). For an error statistic like RMSE, lower and flatter as lead time grows is better.
- Summary vs. aggregation: each plotted point can be a median (the default), mean, or sum of the underlying database rows.
- Confidence intervals: series plots can draw confidence intervals around each line so you can judge whether two models really differ.
Inputs are MET Stat rows; the statistic you choose determines which line type
is read.
A note on names: Stat, MODE, and MODE-TD are
the labels in METviewer’s plot-data dropdown. They correspond to the same output families named
elsewhere as STAT (the .stat line types), MODE, and MTD (MODE Time Domain) — so
MODE-TD is the GUI label for MTD.
Bar plots
Section titled “Bar plots”A bar plot answers the same kind of question as a series plot but for discrete comparisons: instead of connecting points with a line, it draws one bar per category, with bar height proportional to the statistic’s value. The X axis is a category — commonly a date, lead time, or threshold — and the Y axis is the numeric statistic you select.
Like series plots, bars support a series variable (e.g. MODEL), fixed values to
prevent improper aggregation, and a summary method (median, mean, or sum). The source example
plots total MODE object count for seven ensemble members across 3–36 h leads. Plot data can be
drawn from Stat, MODE, or MODE-TD output.
Box-and-whisker plots
Section titled “Box-and-whisker plots”Where a series or bar plot shows one number per category, a box plot shows the whole distribution of a statistic in each category — its center, its spread, and its outliers. That makes it the right tool when you care not just about the typical value but about how variable it is.
Reading it: the median is the dark “waist” line, the box
is the interquartile range (IQR), whiskers extend to 1.5× the box height (or
to the min/max value when that is closer to the median), and points mark
outliers more than 1.5× the IQR from the median. A tall box means a noisy, inconsistent
statistic; a short box means a stable one. Plot data can come from Stat,
MODE, or MODE-TD, and options control outlier display, notches, and
box width.
Reliability diagrams
Section titled “Reliability diagrams”Reliability (or “attributes”) diagrams check the conditional bias of probability forecasts: when you forecast a 30% chance of rain, does it actually rain on about 30% of those occasions? METviewer groups forecasts into probability bins, plots the issued probability on X and the observed relative frequency on Y, and compares the curve to the diagonal.
- Perfect: points lie on the diagonal — forecast probability equals observed frequency.
- Over-forecasting: the curve falls below the diagonal (probabilities too high).
- Under-forecasting: points sit above the diagonal (probabilities too low).
- Reliable enough: the curve hugs the diagonal with a positive slope.
Reliability diagrams use the PCT line type (probability statistics from
Point-Stat or Grid-Stat). An accompanying histogram of sample counts
reveals sharpness — how confidently and how often each probability bin was used.
ROC plots
Section titled “ROC plots”A Receiver Operating Characteristic (ROC) plot asks whether a probability forecast can tell events apart from non-events — its discrimination, or resolution. Because the ROC is conditioned on what was observed, it is the natural companion to the reliability diagram, which is conditioned on what was forecast.
- Axes: X = probability of false detection (POFD, the false-alarm rate — equivalently one minus the probability of correctly detecting non-events, PODn); Y = probability of detection (POD / hit rate).
- No-skill line: the dashed diagonal — a forecast on it has no discrimination.
- Better forecasts pull toward the top-left corner (high hits, few false alarms); the ideal forecast sits in that corner.
- Area under the curve: when
ROC_AUCis present in thePSTDline type, METviewer plots it (0–1 scale); it does not compute the value itself.
ROC plots are built from “Stat” probability output using the PRC,
PCT, and CTC line types from Point-Stat or
Grid-Stat. The observation threshold must be identical at every point on the curve.
Performance (CSI) diagrams
Section titled “Performance (CSI) diagrams”A performance diagram packs four categorical scores into one square so you can see how a yes/no forecast trades detection against false alarms. The X axis is the success ratio (1 − false-alarm ratio); the Y axis is the probability of detection (POD). Two reference families overlay the plot:
- Frequency-bias lines radiate from the origin as dashed straight lines; the main diagonal is unbiased (bias = 1.0). Points above it over-forecast the event; below, under-forecast.
- CSI contours (Critical Success Index) are curves sweeping from the top down to the right side, labeled on the right margin. Higher CSI clusters toward the top-right.
A perfect forecast sits in the top-right corner: high detection, high
success ratio, no false alarms. Performance diagrams accept the categorical line types
CTC, NBRCTC, and CTS from Point-Stat or
Grid-Stat, accumulated over time while kept stratified by model, lead, region, and
so on.
Taylor diagrams
Section titled “Taylor diagrams”A Taylor diagram is a clever piece of geometry that shows three continuous statistics at once — how well the forecast field matches the observed field on pattern, amplitude, and error. It is drawn in polar coordinates:
Correlation → the azimuthal angle — The Pearson correlation coefficient sets the angle; perfect correlation (1.0) points straight along the axis.
Standard deviation → the radial distance from the origin — How far out a point sits encodes the amplitude of variability. The ideal is a normalized standard deviation of 1.0.
RMSE → distance to the reference point — The (normalized) root-mean-square error is proportional to the straight-line distance from a forecast point to the “observed” reference point on the X axis.
The observation is marked as a reference point on the X axis. The closer a forecast
plots to that reference point, the better it is on all three statistics at once;
worse forecasts fall further away. Taylor diagrams read the continuous-statistics line type
CNT from Point-Stat or Grid-Stat. In the source example,
seven station locations for one model are plotted for downward longwave radiation flux, with
the Bondville site performing best at about 0.85 correlation and near-1.0 standard deviation.
Spread vs. skill plots
Section titled “Spread vs. skill plots”This plot judges whether an ensemble knows its own uncertainty. The guiding principle is that a well-calibrated ensemble’s spread (how much its members disagree) should be about equal to its skill (the error of the ensemble mean). Both quantities are plotted on the Y axis against an independent variable — usually lead time — on X.
- Perfect ratio = 1: spread matches the ensemble mean’s error.
- Under-dispersed: the ensemble lacks spread — it is over-confident, its members too similar.
- Over-dispersed: the ensemble has too much spread — its uncertainty is exaggerated.
Two statistics are chosen together; the source example uses SSVAR_RMSE (the skill
measure) and SSVAR_Spread (the spread), drawn from the Spread/Skill Variance
(SSVAR) aggregation. The example shows 2 m temperature RMSE and spread across 36
lead times for an HRRR ensemble over the EAST domain.
Economic value (ECLV) plots
Section titled “Economic value (ECLV) plots”An Economic Cost/Loss Value plot answers a decision-maker’s question rather than a purely statistical one: for what range of cost-to-loss ratios is my forecast worth acting on? The X axis is the cost/loss ratio (the cost of protective action divided by the loss avoided); the Y axis is the relative economic value, which ranges up to 1 and can go negative.
The curve traces the relative improvement in value between climatological information and
perfect information across cost/loss ratios. A positive value means the forecast beats simply
following climatology; at very low or very high cost/loss ratios the value turns negative
because the optimal action is the same regardless of the forecast. ECLV plots require the
ECLV line type — 2×2 contingency-table counts from deterministic forecasts —
generated by Point-Stat or Grid-Stat.
Scorecards
Section titled “Scorecards”A scorecard is the big-picture summary: a grid that compares two models across many variables, regions, and lead times at once, coloring each cell by which model is better and whether the difference is statistically significant. It is how operational centers answer “did the upgrade actually help, and where?”
Anomaly correlation (AC) — the correlation between forecast and observed anomalies from climatology — is the standard upper-air scorecard score and is what the “AC” rows measure. Rows hold statistics and variables (anomaly correlation for heights, RMSE for temperature, wind bias, …); columns hold regions crossed with lead times (e.g. North America Day 1–10). Each cell is color-coded with a symbol showing direction and significance — upward triangles in one tone when the first model wins, downward triangles in a contrasting tone when the second wins, gray when the difference is not significant. Significance bands are 0.95, 0.99, and 0.999 (the 99.9% level); a bootstrap supplies the test, and you can choose the EMC or NCAR significance algorithm.
Making a plot, step by step
Section titled “Making a plot, step by step”Across the GUI-driven plot types the recipe is the same; only the tab and the statistic change.
- Select a database. Point METviewer at the loaded database holding the MET statistics you want to visualize.
- Pick the plot tab. Choose the plot family — Series, Bar, Box, Reliability, ROC, Performance (“Perf”), Taylor, Spread/Skill, or ECLV. (The scorecard is XML-only.)
- Choose the plot data type. Usually
Stat; box and bar plots also acceptMODEandMODE-TD. - Set the Y-axis statistic. Pick the dependent variable and statistic — e.g.
FBIASfor a series plot, or two SSVAR statistics for spread/skill. - Choose a series variable. Select what splits the data into separate lines or
colors, such as
MODELor ensemble member. - Fix the rest. Pin down
FCST_VAR, region (VX_MASK), level, and threshold so nothing improper is aggregated together. - Set the independent variable. Define the X axis — lead time, date, or threshold — and label its values.
- Pick the summary method. Plot each point as a median, mean, or sum, and enable aggregation statistics (e.g. SSVAR) where the plot type needs them.
- Generate and verify. Render the figure, then sanity-check the underlying numbers in the “R data” tab.
A derived, human-readable re-presentation — not official documentation. Sources: Series · Bar · Box · Reliability · ROC · Performance · Taylor · Spread/Skill · ECLV · Scorecards