etna.analysis.metric_per_segment_distribution_plot#

metric_per_segment_distribution_plot(metrics_df: DataFrame, metric_name: str, per_fold_aggregation_mode: str | None = None, plot_type: Literal['hist'] | Literal['box'] | Literal['violin'] = 'hist', seaborn_params: Dict[str, Any] | None = None, figsize: Tuple[int, int] = (10, 5))[source]#

Plot distribution of metric values over all segments.

If for some segment all metric values are missing, it isn’t plotted, and the warning is raised.

If some segments have different set of folds with non-missing metrics, it can lead to incompatible values between folds. The warning is raised in such case.

Parameters:
  • metrics_df (DataFrame) – dataframe with metrics calculated on the backtest

  • metric_name (str) – name of the metric to visualize

  • per_fold_aggregation_mode (str | None) –

    • If None, separate distributions for each fold will be drawn

    • If str, determines how to aggregate metrics over the folds if they aren’t already aggregated (see PerFoldAggregation)

  • plot_type (Literal['hist'] | ~typing.Literal['box'] | ~typing.Literal['violin']) – type of plot (see MetricPlotType)

  • seaborn_params (Dict[str, Any] | None) – dictionary with parameters for plotting

  • figsize (Tuple[int, int]) – size of the figure per subplot with one segment in inches

Raises:
  • ValueError: – if metric_name isn’t present in metrics_df

  • NotImplementedError: – unknown per_fold_aggregation_mode is given

Warning

UserWarning:

There are segments with all missing metric values.

UserWarning:

Some segments have different set of folds to be aggregated on due to missing values.