docs: def getcolors(spec, n, cmap=None, value=None):
      """
      Turn list of color specs into list of arrays.
      """
      if cmap is not None and spec is not None:
          from matplotlib.colors import LinearSegmentedColormap
          from matplotlib.cm import get_cmap
          if isinstance(cmap, LinearSegmentedColormap):
              return cmap(value)[:, 0:3]
          if isinstance(cmap, str):
              return get_cmap(cmap, n)(value)[:, 0:3]
      if isinstance(spec, str):
          return [getcolor(spec) for i in range(n)]
      elif isinstance(spec, list) and isinstance(spec[0], str):
          return [getcolor(s) for s in spec]
      elif (isinstance(spec, list) or isinstance(spec, ndarray)) and asarray(spec).shape == (3,):
          return [spec for i in range(n)]
      else:
          return spec