class_docstr: Plot MEG/EEG fields on head surface and helmet in 3D.
  
  Parameters
  ----------
  evoked : instance of mne.Evoked
      The evoked object.
  surf_maps : list
      The surface mapping information obtained with make_field_map.
  time : float | None
      The time point at which the field map shall be displayed. If None,
      the average peak latency (across sensor types) is used.
  time_label : str | None
      How to print info about the time instant visualized.
  %(n_jobs)s
  fig : instance of Figure3D | None
      If None (default), a new figure will be created, otherwise it will
      plot into the given figure.
  
      .. versionadded:: 0.20
  vmax : float | dict | None
      Maximum intensity. Can be a dictionary with two entries ``"eeg"`` and ``"meg"``
      to specify separate values for EEG and MEG fields respectively. Can be
      ``None`` to use the maximum value of the data.
  
      .. versionadded:: 0.21
      .. versionadded:: 1.4
          ``vmax`` can be a dictionary to specify separate values for EEG and
          MEG fields.
  n_contours : int
      The number of contours.
  
      .. versionadded:: 0.21
  show_density : bool
      Whether to draw the field density as an overlay on top of the helmet/head
      surface. Defaults to ``True``.
  alpha : float | dict | None
      Opacity of the meshes (between 0 and 1). Can be a dictionary with two
      entries ``"eeg"`` and ``"meg"`` to specify separate values for EEG and
      MEG fields respectively. Can be ``None`` to use 1.0 when a single field
      map is shown, or ``dict(eeg=1.0, meg=0.5)`` when both field maps are shown.
  
      .. versionadded:: 1.4
  %(interpolation_brain_time)s
  
      .. versionadded:: 1.6
  %(interaction_scene)s
      Defaults to ``'terrain'``.
  
      .. versionadded:: 1.1
  time_viewer : bool | str
      Display time viewer GUI. Can also be ``"auto"``, which will mean
      ``True`` if there is more than one time point and ``False`` otherwise.
  
      .. versionadded:: 1.6
  %(verbose)s
  
  Notes
  -----
  The figure will publish and subscribe to the following UI events:
  
  * :class:`~mne.viz.ui_events.TimeChange`
  * :class:`~mne.viz.ui_events.Contours`, ``kind="field_strength_meg" | "field_strength_eeg"``
  * :class:`~mne.viz.ui_events.ColormapRange`, ``kind="field_strength_meg" | "field_strength_eeg"``
class_docstr_tok: ["Plot","MEG\/EEG","fields","on","head","surface","and","helmet","in","3D",".","Parameters","--","--","--","--","--","evoked",":","instance","of","mne.Evoked","The","evoked","object",".","surf_maps",":","list","The","surface","mapping","information","obtained","with","make_field_map",".","time",":","float","|","None","The","time","point","at","which","the","field","map","shall","be","displayed",".","If","None",",","the","average","peak","latency","(","across","sensor","types",")","is","used",".","time_label",":","str","|","None","How","to","print","info","about","the","time","instant","visualized",".","%","(","n_jobs",")","s","fig",":","instance","of","Figure3D","|","None","If","None","(","default",")",",","a","new","figure","will","be","created",",","otherwise","it","will","plot","into","the","given","figure",".","..","versionadded",":",":","0.20","vmax",":","float","|","dict","|","None","Maximum","intensity",".","Can","be","a","dictionary","with","two","entries","``","``","eeg","''","``","and","``","``","meg","''","``","to","specify","separate","values","for","EEG","and","MEG","fields","respectively",".","Can","be","``","None","``","to","use","the","maximum","value","of","the","data",".","..","versionadded",":",":","0.21","..","versionadded",":",":","1.4","``","vmax","``","can","be","a","dictionary","to","specify","separate","values","for","EEG","and","MEG","fields",".","n_contours",":","int","The","number","of","contours",".","..","versionadded",":",":","0.21","show_density",":","bool","Whether","to","draw","the","field","density","as","an","overlay","on","top","of","the","helmet\/head","surface",".","Defaults","to","``","True","``",".","alpha",":","float","|","dict","|","None","Opacity","of","the","meshes","(","between","0","and","1",")",".","Can","be","a","dictionary","with","two","entries","``","``","eeg","''","``","and","``","``","meg","''","``","to","specify","separate","values","for","EEG","and","MEG","fields","respectively",".","Can","be","``","None","``","to","use","1.0","when","a","single","field","map","is","shown",",","or","``","dict","(","eeg=1.0",",","meg=0.5",")","``","when","both","field","maps","are","shown",".","..","versionadded",":",":","1.4","%","(","interpolation_brain_time",")","s","..","versionadded",":",":","1.6","%","(","interaction_scene",")","s","Defaults","to","``","'terrain","'","``",".","..","versionadded",":",":","1.1","time_viewer",":","bool","|","str","Display","time","viewer","GUI",".","Can","also","be","``","``","auto","''","``",",","which","will","mean","``","True","``","if","there","is","more","than","one","time","point","and","``","False","``","otherwise",".","..","versionadded",":",":","1.6","%","(","verbose",")","s","Notes","--","--","-","The","figure","will","publish","and","subscribe","to","the","following","UI","events",":","*",":","class",":","`","~mne.viz.ui_events.TimeChange","`","*",":","class",":","`","~mne.viz.ui_events.Contours","`",",","``","kind=","''","field_strength_meg","''","|","``","field_strength_eeg","''","``","*",":","class",":","`","~mne.viz.ui_events.ColormapRange","`",",","``","kind=","''","field_strength_meg","''","|","``","field_strength_eeg","''","``"]
docstr: Respond to the contours UI event.
docstr_tok: ["Respond","to","the","contours","UI","event","."]
code: def _on_contours(self, event):
      """Respond to the contours UI event."""
      if event.kind == "field_strength_meg":
          kind = "meg"
      elif event.kind == "field_strength_eeg":
          kind = "eeg"
      else:
          return
  
      for surf_map in self._surf_maps:
          if surf_map["map_kind"] == kind:
              break
      surf_map["contours"] = event.contours
      self._n_contours = len(event.contours)
      with disable_ui_events(self):
          if "contours" in self._widgets:
              self._widgets["contours"].set_value(len(event.contours))
      self._update()
  
imports: from functools import partial
  import numpy
  from scipy.interpolate import interp1d
  from .._fiff.pick import pick_types
  from ..defaults import DEFAULTS
  from ..utils import _auto_weakref, _check_option, _ensure_int, _to_rgb, _validate_type, fill_doc
  from ._3d_overlay import _LayeredMesh
  from .ui_events import ColormapRange, Contours, TimeChange, disable_ui_events, publish, subscribe
  from .utils import mne_analyze_colormap
label_desc: Use image node_id 7 for calling the EvokedField obj's underlying member method code with example usage: obj._on_contours(event) without return types