code: def plot_evoked_topo(
      evoked,
      layout=None,
      layout_scale=0.945,
      color=None,
      border="none",
      ylim=None,
      scalings=None,
      title=None,
      proj=False,
      vline=[0.0],
      fig_background=None,
      merge_grads=False,
      legend=True,
      axes=None,
      background_color="w",
      noise_cov=None,
      exclude="bads",
      show=True,
  ):
      """Plot 2D topography of evoked responses.
  
      Clicking on the plot of an individual sensor opens a new figure showing
      the evoked response for the selected sensor.
  
      Parameters
      ----------
      evoked : list of Evoked | Evoked
          The evoked response to plot.
      layout : instance of Layout | None
          Layout instance specifying sensor positions (does not need to
          be specified for Neuromag data). If possible, the correct layout is
          inferred from the data.
      layout_scale : float
          Scaling factor for adjusting the relative size of the layout
          on the canvas.
      color : list of color | color | None
          Everything matplotlib accepts to specify colors. If not list-like,
          the color specified will be repeated. If None, colors are
          automatically drawn.
      border : str
          Matplotlib borders style to be used for each sensor plot.
      ylim : dict | None
          Y limits for plots (after scaling has been applied). The value
          determines the upper and lower subplot limits. e.g.
          ylim = dict(eeg=[-20, 20]). Valid keys are eeg, mag, grad, misc.
          If None, the ylim parameter for each channel type is determined by
          the minimum and maximum peak.
      scalings : dict | None
          The scalings of the channel types to be applied for plotting. If None,`
          defaults to ``dict(eeg=1e6, grad=1e13, mag=1e15)``.
      title : str
          Title of the figure.
      proj : bool | 'interactive'
          If true SSP projections are applied before display. If 'interactive',
          a check box for reversible selection of SSP projection vectors will
          be shown.
      vline : list of float | float| None
          The values at which to show a vertical line.
      fig_background : None | ndarray
          A background image for the figure. This must work with a call to
          plt.imshow. Defaults to None.
      merge_grads : bool
          Whether to use RMS value of gradiometer pairs. Only works for Neuromag
          data. Defaults to False.
      legend : bool | int | str | tuple
          If True, create a legend based on evoked.comment. If False, disable the
          legend. Otherwise, the legend is created and the parameter value is
          passed as the location parameter to the matplotlib legend call. It can
          be an integer (e.g. 0 corresponds to upper right corner of the plot),
          a string (e.g. 'upper right'), or a tuple (x, y coordinates of the
          lower left corner of the legend in the axes coordinate system).
          See matplotlib documentation for more details.
      axes : instance of matplotlib Axes | None
          Axes to plot into. If None, axes will be created.
      background_color : color
          Background color. Typically 'k' (black) or 'w' (white; default).
  
          .. versionadded:: 0.15.0
      noise_cov : instance of Covariance | str | None
          Noise covariance used to whiten the data while plotting.
          Whitened data channel names are shown in italic.
          Can be a string to load a covariance from disk.
  
          .. versionadded:: 0.16.0
      exclude : list of str | 'bads'
          Channels names to exclude from the plot. If 'bads', the
          bad channels are excluded. By default, exclude is set to 'bads'.
      show : bool
          Show figure if True.
  
      Returns
      -------
      fig : instance of matplotlib.figure.Figure
          Images of evoked responses at sensor locations.
      """
      if type(evoked) not in (tuple, list):
          evoked = [evoked]
  
      background_color = _to_rgb(
          background_color, name="background_color"
      )
      dark_background = np.mean(background_color) < 0.5
      if dark_background:
          fig_facecolor = background_color
          axis_facecolor = background_color
          font_color = "w"
      else:
          fig_facecolor = background_color
          axis_facecolor = background_color
          font_color = "k"
  
      if isinstance(color, (tuple, list)):
          if len(color) != len(evoked):
              raise ValueError(
                  "Lists of evoked objects and colors"
                  " must have the same length"
              )
      elif color is None:
          if dark_background:
              color = ["w"] + _get_color_list()
          else:
              color = _get_color_list()
          color = color * ((len(evoked) % len(color)) + 1)
          color = color[: len(evoked)]
      else:
          if not isinstance(color, str):
              raise ValueError(
                  "color must be of type tuple, list, str, or None."
              )
          color = cycle([color])
  
      return _plot_evoked_topo(
          evoked=evoked,
          layout=layout,
          layout_scale=layout_scale,
          color=color,
          border=border,
          ylim=ylim,
          scalings=scalings,
          title=title,
          proj=proj,
          vline=vline,
          fig_facecolor=fig_facecolor,
          fig_background=fig_background,
          axis_facecolor=axis_facecolor,
          font_color=font_color,
          merge_channels=merge_grads,
          legend=legend,
          axes=axes,
          exclude=exclude,
          show=show,
          noise_cov=noise_cov,
      )
  
imports: from copy import deepcopy
  from functools import partial
  from itertools import cycle
  from numbers import Integral
  import numpy
  from .._fiff.pick import _DATA_CH_TYPES_SPLIT, _PICK_TYPES_DATA_DICT, _VALID_CHANNEL_TYPES, _picks_to_idx, channel_indices_by_type, channel_type, pick_info
  from ..defaults import _handle_default
  from ..fixes import _is_last_row
  from ..utils import _check_ch_locs, _check_if_nan, _clean_names, _is_numeric, _pl, _to_rgb, _validate_type, fill_doc, logger, verbose, warn
  from .topo import _plot_evoked_topo
  from .topomap import _check_sphere, _draw_outlines, _get_pos_outlines, _make_head_outlines, _prepare_topomap, _prepare_topomap_plot, _set_contour_locator, plot_topomap
  from .utils import DraggableColorbar, _check_cov, _check_delayed_ssp, _check_option, _check_time_unit, _draw_proj_checkbox, _get_cmap, _get_color_list, _make_combine_callable, _plot_masked_image, _prepare_joint_axes, _process_times, _prop_kw, _set_title_multiple_electrodes, _set_window_title, _setup_ax_spines, _setup_cmap, _setup_plot_projector, _setup_vmin_vmax, _triage_rank_sss, _trim_ticks, _validate_if_list_of_axes, plt_show
label_desc: Use image node_id 14 for calling a global function with example usage: plot_evoked_topo(evoked, layout, layout_scale, color, border, ylim, scalings, title, proj, vline, fig_background, merge_grads, legend, axes, background_color, noise_cov, exclude, show) and returns: _plot_evoked_topo