class_docstr: Specialized PolyCollection for barbs.
  
  The only API method is :meth:`set_UVC`, which can be used to
  change the size, orientation, and color of the arrows.  Locations
  are changed using the :meth:`set_offsets` collection method.
  Possibly this method will be useful in animations.
  
  There is one internal function :meth:`_find_tails` which finds
  exactly what should be put on the barb given the vector magnitude.
  From there :meth:`_make_barbs` is used to find the vertices of the
  polygon to represent the barb based on this information.
class_docstr_tok: ["Specialized","PolyCollection","for","barbs",".","The","only","API","method","is",":","meth",":","`","set_UVC","`",",","which","can","be","used","to","change","the","size",",","orientation",",","and","color","of","the","arrows",".","Locations","are","changed","using","the",":","meth",":","`","set_offsets","`","collection","method",".","Possibly","this","method","will","be","useful","in","animations",".","There","is","one","internal","function",":","meth",":","`","_find_tails","`","which","finds","exactly","what","should","be","put","on","the","barb","given","the","vector","magnitude",".","From","there",":","meth",":","`","_make_barbs","`","is","used","to","find","the","vertices","of","the","polygon","to","represent","the","barb","based","on","this","information","."]
docstr: The constructor takes one required argument, an Axes
  instance, followed by the args and kwargs described
  by the following pyplot interface documentation:
  %(barbs_doc)s
docstr_tok: ["The","constructor","takes","one","required","argument",",","an","Axes","instance",",","followed","by","the","args","and","kwargs","described","by","the","following","pyplot","interface","documentation",":","%","(","barbs_doc",")","s"]
code: def __init__(
      self,
      ax,
      *args,
      pivot="tip",
      length=7,
      barbcolor=None,
      flagcolor=None,
      sizes=None,
      fill_empty=False,
      barb_increments=None,
      rounding=True,
      flip_barb=False,
      **kwargs,
  ):
      """
      The constructor takes one required argument, an Axes
      instance, followed by the args and kwargs described
      by the following pyplot interface documentation:
      %(barbs_doc)s
      """
      self.sizes = sizes or dict()
      self.fill_empty = fill_empty
      self.barb_increments = barb_increments or dict()
      self.rounding = rounding
      self.flip = np.atleast_1d(flip_barb)
      transform = kwargs.pop("transform", ax.transData)
      self._pivot = pivot
      self._length = length
  
      # Flagcolor and barbcolor provide convenience parameters for
      # setting the facecolor and edgecolor, respectively, of the barb
      # polygon.  We also work here to make the flag the same color as the
      # rest of the barb by default
  
      if None in (barbcolor, flagcolor):
          kwargs["edgecolors"] = "face"
          if flagcolor:
              kwargs["facecolors"] = flagcolor
          elif barbcolor:
              kwargs["facecolors"] = barbcolor
          else:
              # Set to facecolor passed in or default to black
              kwargs.setdefault("facecolors", "k")
      else:
          kwargs["edgecolors"] = barbcolor
          kwargs["facecolors"] = flagcolor
  
      # Explicitly set a line width if we're not given one, otherwise
      # polygons are not outlined and we get no barbs
      if "linewidth" not in kwargs and "lw" not in kwargs:
          kwargs["linewidth"] = 1
  
      # Parse out the data arrays from the various configurations supported
      x, y, u, v, c = _parse_args(*args, caller_name="barbs")
      self.x = x
      self.y = y
      xy = np.column_stack((x, y))
  
      # Make a collection
      barb_size = self._length**2 / 4  # Empirically determined
      super().__init__(
          [],
          (barb_size,),
          offsets=xy,
          offset_transform=transform,
          **kwargs,
      )
      self.set_transform(transforms.IdentityTransform())
  
      self.set_UVC(u, v, c)
  
imports: import math
  import numpy
  from numpy import ma
  from matplotlib import _api, cbook, _docstring
  import matplotlib.artist
  import matplotlib.collections
  from matplotlib.patches import CirclePolygon
  import matplotlib.text
  import matplotlib.transforms
label_desc: Use image node_id 1 to create a new Barbs object from inherited base classes: mcollections with example: obj = Barbs(ax)