code: def _plot_topo(
      info,
      times,
      show_func,
      click_func=None,
      layout=None,
      vmin=None,
      vmax=None,
      ylim=None,
      colorbar=None,
      border="none",
      axis_facecolor="k",
      fig_facecolor="k",
      cmap="RdBu_r",
      layout_scale=None,
      title=None,
      x_label=None,
      y_label=None,
      font_color="w",
      unified=False,
      img=False,
      axes=None,
  ):
      """Plot on sensor layout."""
      import matplotlib.pyplot as plt
  
      if layout.kind == "custom":
          layout = deepcopy(layout)
          layout.pos[:, :2] -= layout.pos[:, :2].min(0)
          layout.pos[:, :2] /= layout.pos[:, :2].max(0)
  
      # prepare callbacks
      tmin, tmax = times[0], times[-1]
      click_func = show_func if click_func is None else click_func
      on_pick = partial(
          click_func,
          tmin=tmin,
          tmax=tmax,
          vmin=vmin,
          vmax=vmax,
          ylim=ylim,
          x_label=x_label,
          y_label=y_label,
      )
  
      if axes is None:
          # Don't use constrained layout because we place axes manually
          fig = plt.figure(layout=None)
          axes = plt.axes([0.015, 0.025, 0.97, 0.95])
          axes.set_facecolor(fig_facecolor)
      else:
          fig = axes.figure
      if colorbar:
          sm = plt.cm.ScalarMappable(
              cmap=cmap, norm=plt.Normalize(vmin, vmax)
          )
          sm.set_array(np.linspace(vmin, vmax))
          cb = fig.colorbar(
              sm,
              ax=axes,
              pad=0.025,
              fraction=0.075,
              shrink=0.5,
              anchor=(-1, 0.5),
          )
          cb_yticks = plt.getp(cb.ax.axes, "yticklabels")
          plt.setp(cb_yticks, color=font_color)
      axes.axis("off")
  
      my_topo_plot = _iter_topography(
          info,
          layout=layout,
          on_pick=on_pick,
          fig=fig,
          layout_scale=layout_scale,
          axis_spinecolor=border,
          axis_facecolor=axis_facecolor,
          fig_facecolor=fig_facecolor,
          unified=unified,
          img=img,
          axes=axes,
      )
  
      for ax, ch_idx in my_topo_plot:
          if layout.kind == "Vectorview-all" and ylim is not None:
              this_type = {"mag": 0, "grad": 1}[
                  channel_type(info, ch_idx)
              ]
              ylim_ = [
                  v[this_type] if _check_vlim(v) else v for v in ylim
              ]
          else:
              ylim_ = ylim
  
          show_func(
              ax,
              ch_idx,
              tmin=tmin,
              tmax=tmax,
              vmin=vmin,
              vmax=vmax,
              ylim=ylim_,
          )
  
      if title is not None:
          plt.figtext(
              0.03, 0.95, title, color=font_color, fontsize=15, va="top"
          )
  
      return fig
  
imports: from copy import deepcopy
  from functools import partial
  import numpy
  from scipy import ndimage
  from .._fiff.pick import channel_type, pick_types
  from ..defaults import _handle_default
  from ..utils import Bunch, _check_option, _clean_names, _is_numeric, _to_rgb, fill_doc
  from .utils import DraggableColorbar, _check_cov, _check_delayed_ssp, _draw_proj_checkbox, _plot_masked_image, _setup_ax_spines, _setup_vmin_vmax, add_background_image, plt_show
label_desc: Use image node_id 4 for calling a global function with example usage: _plot_topo(info, times, show_func, click_func, layout, vmin, vmax, ylim, colorbar, border, axis_facecolor, fig_facecolor, cmap, layout_scale, title, x_label, y_label, font_color, unified, img, axes) and returns: fig