code: def scatter(
      *args: any,
      names: Optional[List[str]] = None,
      x_name: Optional[str] = None,
      noise: Optional[Tuple[float, float]] = None,
      circle_size: int = 20,
      height: int = 400,
      width: int = 800,
      height_minimap: int = 100,
  ):
      r"""
      Creates a scatter plot with Altair
  
      This has multiple overloads
  
      .. function:: scatter(indicators: IndicatorCollection, x_indicators: IndicatorCollection, *, names: Optional[List[str]] = None, x_name: Optional[str] = None, noise: Optional[Tuple[float, float]] = None, circle_size: int = 20, height: int = 400, width: int = 800, height_minimap: int = 100)
          :noindex:
  
      .. function:: scatter(series: List[np.ndarray], x_series: np.ndarray, *, names: Optional[List[str]] = None, x_name: Optional[str] = None, noise: Optional[Tuple[float, float]] = None, circle_size: int = 20, height: int = 400, width: int = 800, height_minimap: int = 100)
          :noindex:
  
      Arguments:
          indicators(IndicatorCollection): Set of indicators to be plotted
          x_indicators(IndicatorCollection): Indicator for x-axis
          series(List[np.ndarray]): List of series of data
          x_series(np.ndarray): X series of data
  
      Keyword Arguments:
          names(List[str]): List of names of series
          name(str): Name of X series
          noise: Noise to be added to spread out the scatter plot
          circle_size: size of circles in the plot
          height: height of the visualization
          width: width of the visualization
          height_minimap: height of the view finder
  
      Return:
          The Altair visualization
  
      :Example:
          >>> from labml import analytics
          >>> indicators = analytics.runs('1d3f855874d811eabb9359457a24edc8')
          >>> analytics.scatter(indicators.validation_loss, indicators.train_loss)
      """
  
      series = None
      x_series = None
  
      if len(args) == 2:
          if isinstance(args[0], _IndicatorCollection) and isinstance(
              args[1], _IndicatorCollection
          ):
              series, names_ = _cache.get_indicators_data(args[0])
              x_series, x_name_ = _cache.get_indicators_data(args[1])
  
              if len(x_series) != 1:
                  raise ValueError(
                      "There should be exactly one series for x-axis"
                  )
              if not series:
                  raise ValueError("No series found")
              x_series = x_series[0]
              if x_name is None:
                  x_name = x_name_[0]
              if names is None:
                  names = names_
          elif isinstance(args[0], list):
              series = args[0]
              x_series = args[1]
  
      if series is None:
          raise ValueError(
              "scatter should be called with an indicator collection"
              " or a series. Check documentation for details."
          )
  
      if x_name is None:
          x_name = "x"
      if names is None:
          names = [f"{i + 1}" for i in range(len(series))]
  
      tables = [
          _scatter.data_to_table(s, x_series, noise) for s in series
      ]
      names = _remove_names_prefix(names)
  
      return _scatter.render(
          tables,
          names=names,
          x_name=x_name,
          width=width,
          height=height,
          height_minimap=height_minimap,
          circle_size=circle_size,
      )
  
imports: from typing import Tuple, Optional, List, overload, Union, TYPE_CHECKING
  import numpy
  from labml.internal.analytics import cache
  from labml.internal.analytics.altair import density
  from labml.internal.analytics.altair import histogram
  from labml.internal.analytics.altair import scatter
  from labml.internal.analytics.altair import binned_heatmap
  from labml.internal.analytics.indicators import IndicatorCollection
  from labml.internal.analytics.models import ModelProbe
  from labml.internal.analytics.models import ValueCollection
  from labml.internal.analytics.models import DeepValueCollection
  from labml.internal.analytics.viz import text_attention
  from labml.internal.analytics.viz import init_inline_viz
label_desc: Use image node_id 15 for calling a global function with example usage: scatter() and returns: _scatter