code: def model_transitions_scatter(
      model_transitions: List[int],
      y_range: List[float],
      generator_change_color: Tuple[int] = COLORS.TEAL.value,
  ) -> List[go.Scatter]:
      """Creates a graph object for the line(s) representing generator changes.
  
      Args:
          model_transitions: iterations, before which generators
              changed
          y_range: upper and lower values of the y-range of the plot
          generator_change_color: tuple of 3 int values representing
              an RGB color. Defaults to orange.
  
      Returns:
          go.Scatter: plotly graph objects for the lines representing generator
              changes
      """
      if len(y_range) != 2:
          raise ValueError(
              "y_range should have two values, lower and upper."
          )
      data: List[go.Scatter] = []
      for change in model_transitions:
          data.append(
              go.Scatter(
                  x=[change] * 2,
                  y=y_range,
                  mode="lines",
                  line={
                      "dash": "dash",
                      "color": rgba(generator_change_color),
                  },
                  name="model change",
              )
          )
      return data
  
imports: from datetime import datetime, timedelta
  from typing import Any, Dict, List, Optional, Tuple, Union
  import numpy
  import pandas
  import plotly.graph_objs
  from ax.core.experiment import Experiment
  from ax.plot.base import AxPlotConfig, AxPlotTypes
  from ax.plot.color import COLORS, DISCRETE_COLOR_SCALE, rgba
  from ax.utils.common.timeutils import timestamps_in_range
  from ax.utils.common.typeutils import not_none
  from plotly import express
  from plotly.express.colors import sample_colorscale
label_desc: Use image node_id 7 for calling a global function with example usage: model_transitions_scatter(model_transitions, y_range, generator_change_color) and returns: data