class_docstr: Interactive wrapper for a matplotlib collection.
  
  This class enables collection points to be lasso-ed and click selected.
  
  The currently selected points are given a visually distinctive style, and
  you can modify your selection by either clicking on individual points or
  drawing a lasso around new points.
  
  When the shift key is pressed, new selections are added to the selected
  set, or subtracted if the new selection is a subset of the current
  selection.
  
  Args:
      collection: a ``matplotlib.collections.Collection`` to select points
          from
      ids (None): an array-like of IDs corresponding to the points in
          ``collection``
      buttons (None): a list of ``(label, icon_image, callback)`` tuples
          defining buttons to add to the plot
      alpha_other (0.25): a transparency value for unselected points
      expand_selected (3.0): expand the size of selected points by this
          multiple
      click_tolerance (0.02): a click distance tolerance in ``[0, 1]`` when
          clicking individual points
      **kwargs: keyword arguments for the
          :class:`fiftyone.core.plots.base.InteractivePlot` constructor
class_docstr_tok: ["Interactive","wrapper","for","a","matplotlib","collection",".","This","class","enables","collection","points","to","be","lasso-ed","and","click","selected",".","The","currently","selected","points","are","given","a","visually","distinctive","style",",","and","you","can","modify","your","selection","by","either","clicking","on","individual","points","or","drawing","a","lasso","around","new","points",".","When","the","shift","key","is","pressed",",","new","selections","are","added","to","the","selected","set",",","or","subtracted","if","the","new","selection","is","a","subset","of","the","current","selection",".","Args",":","collection",":","a","``","matplotlib.collections.Collection","``","to","select","points","from","ids","(","None",")",":","an","array-like","of","IDs","corresponding","to","the","points","in","``","collection","``","buttons","(","None",")",":","a","list","of","``","(","label",",","icon_image",",","callback",")","``","tuples","defining","buttons","to","add","to","the","plot","alpha_other","(","0.25",")",":","a","transparency","value","for","unselected","points","expand_selected","(","3.0",")",":","expand","the","size","of","selected","points","by","this","multiple","click_tolerance","(","0.02",")",":","a","click","distance","tolerance","in","``","[","0",",","1","]","``","when","clicking","individual","points","*","*","kwargs",":","keyword","arguments","for","the",":","class",":","`","fiftyone.core.plots.base.InteractivePlot","`","constructor"]
code: def _update_hud(self, visible):
      self._title.set_visible(visible)
      for button, _ in self._buttons:
          button.ax.set_visible(visible)
  
imports: import itertools
  import logging
  import numpy
  import matplotlib
  from matplotlib.widgets import Button, LassoSelector
  from matplotlib.path import Path
  import matplotlib.pyplot
  from mpl_toolkits.axes_grid1 import make_axes_locatable
  from mpl_toolkits.axes_grid1.inset_locator import InsetPosition
  from mpl_toolkits.mplot3d import Axes3D
  import sklearn.metrics.pairwise
  import sklearn.metrics
  import eta.core.utils
  import fiftyone.core.context
  import fiftyone.core.utils
  from .base import InteractivePlot
  from .utils import best_fit_line, load_button_icon, parse_lines_inputs, parse_locations, parse_scatter_inputs
label_desc: Use image node_id 14 for calling the InteractiveCollection obj's underlying member method code with example usage: obj._update_hud(visible) without return types