code: def _draw_one_plot(
      df: pd.DataFrame,
      time_column_name: str,
      grain_column_names: List[str],
      pdf: PdfPages,
  ) -> None:
      """
      Draw the single plot.
  
      :param df: The data frame with the data to build plot.
      :param time_column_name: The name of a time column.
      :param grain_column_names: The name of grain columns.
      :param pdf: The pdf backend used to render the plot.
      """
      fig, _ = plt.subplots(figsize=(20, 10))
      df = df.set_index(time_column_name)
      plt.plot(df[[ACTUALS, PREDICTIONS]])
      plt.xticks(rotation=45)
      iteration = df[BACKTEST_ITER].iloc[0]
      if grain_column_names:
          grain_name = [
              df[grain].iloc[0] for grain in grain_column_names
          ]
          plt.title(
              f"Time series ID: {_format_grain_name(grain_name)} {iteration}"
          )
      plt.legend(["actual", "forecast"])
      plt.close(fig)
      pdf.savefig(fig)
  
file_path: MachineLearningNotebooks/how-to-use-azureml/automated-machine-learning/forecasting-backtest-many-models/assets/score.py
imports: from typing import Any, Dict, Optional, List
  import argparse
  import json
  import os
  import re
  import numpy
  import pandas
  from matplotlib import pyplot
  from matplotlib.backends.backend_pdf import PdfPages
  from azureml.automl.core.shared import constants
  from azureml.automl.core.shared.types import GrainType
  from azureml.automl.runtime.shared.score import scoring
label_desc: Use image node_id 4 for calling a global function with example usage: _draw_one_plot(df, time_column_name, grain_column_names, pdf) without return types