code: def test_plot_evaluation_metrics(valid_bm, metric_dict):
      bm = valid_bm
  
      # default value, all configs
      with pytest.warns(UserWarning):
          fig = bm.plot_evaluation_metrics(metric_dict=metric_dict)
          assert fig.layout.showlegend
          assert fig.layout.barmode == "group"
          assert fig.layout.xaxis.title.text is None
          assert fig.layout.yaxis.title.text == "Metric value"
          assert (
              fig.layout.title.text
              == "Average evaluation metric across rolling windows"
          )
          assert fig.layout.title.x == 0.5
          assert len(fig.data) == len(bm.configs)
  
          expected_xaxis = set()
          for metric_name in metric_dict.keys():
              expected_xaxis = expected_xaxis.union(
                  {f"train_{metric_name}", f"test_{metric_name}"}
              )
  
          assert fig.data[0].name == "valid_prophet"
          assert_equal(set(fig.data[0].x), expected_xaxis)
          assert fig.data[1].name == "valid_silverkite"
          assert_equal(set(fig.data[1].x), expected_xaxis)
  
      # custom value
      with pytest.warns(UserWarning):
          config_names = ["valid_prophet"]
          fig = bm.plot_evaluation_metrics(
              metric_dict=metric_dict,
              config_names=config_names,
              xlabel="xlab",
              ylabel="ylab",
              title="title",
              showlegend=False,
          )
          assert not fig.layout.showlegend
          assert fig.layout.xaxis.title.text == "xlab"
          assert fig.layout.yaxis.title.text == "ylab"
          assert fig.layout.title.text == "title"
          assert fig.layout.title.x == 0.5
          assert len(fig.data) == len(config_names)
  
          assert fig.data[0].name == "valid_prophet"
          assert_equal(set(fig.data[0].x), expected_xaxis)
  
imports: import pickle
  import sys
  import numpy
  import pandas
  import pytest
  from plotly.colors import DEFAULT_PLOTLY_COLORS
  from greykite.algo.forecast.silverkite.constants.silverkite_holiday import SilverkiteHoliday
  from greykite.common.constants import ACTUAL_COL
  from greykite.common.constants import PREDICTED_COL
  from greykite.common.constants import PREDICTED_LOWER_COL
  from greykite.common.constants import PREDICTED_UPPER_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.evaluation import root_mean_squared_error
  from greykite.common.python_utils import assert_equal
  from greykite.common.testing_utils import generate_df_with_reg_for_tests
  from greykite.framework.benchmark.benchmark_class import BenchmarkForecastConfig
  from greykite.framework.constants import FORECAST_STEP_COL
  from greykite.framework.templates.autogen.forecast_config import ComputationParam
  from greykite.framework.templates.autogen.forecast_config import EvaluationMetricParam
  from greykite.framework.templates.autogen.forecast_config import EvaluationPeriodParam
  from greykite.framework.templates.autogen.forecast_config import ForecastConfig
  from greykite.framework.templates.autogen.forecast_config import MetadataParam
  from greykite.framework.templates.autogen.forecast_config import ModelComponentsParam
  from greykite.framework.templates.forecaster import Forecaster
  from greykite.framework.templates.model_templates import ModelTemplateEnum
  from greykite.sklearn.cross_validation import RollingTimeSeriesSplit
label_desc: Use image node_id 13 for calling a global function with example usage: test_plot_evaluation_metrics(valid_bm, metric_dict) without return types