code: def _get_qualitative_colors(num_classes, colors=None):
      if colors is None:
          if num_classes == 1:
              colors = [_DEFAULT_LINE_COLOR]
          elif num_classes <= 10:
              colors = list(
                  plt.cm.Paired.colors
              )  # pylint: disable=no-member
          else:
              colors = list(
                  plt.cm.tab20.colors
              )  # pylint: disable=no-member
  
      # @todo can we blend when there are more classes than colors?
      colors = list(colors)
      return [colors[i % len(colors)] for i in range(num_classes)]
  
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 11 for calling a global function with example usage: _get_qualitative_colors(num_classes, colors) and returns: unknown