class_docstr: Specialized PolyCollection for arrows.
  
  The only API method is set_UVC(), which can be used
  to change the size, orientation, and color of the
  arrows; their locations are fixed when the class is
  instantiated.  Possibly this method will be useful
  in animations.
  
  Much of the work in this class is done in the draw()
  method so that as much information as possible is available
  about the plot.  In subsequent draw() calls, recalculation
  is limited to things that might have changed, so there
  should be no performance penalty from putting the calculations
  in the draw() method.
class_docstr_tok: ["Specialized","PolyCollection","for","arrows",".","The","only","API","method","is","set_UVC","(",")",",","which","can","be","used","to","change","the","size",",","orientation",",","and","color","of","the","arrows",";","their","locations","are","fixed","when","the","class","is","instantiated",".","Possibly","this","method","will","be","useful","in","animations",".","Much","of","the","work","in","this","class","is","done","in","the","draw","(",")","method","so","that","as","much","information","as","possible","is","available","about","the","plot",".","In","subsequent","draw","(",")","calls",",","recalculation","is","limited","to","things","that","might","have","changed",",","so","there","should","be","no","performance","penalty","from","putting","the","calculations","in","the","draw","(",")","method","."]
docstr: Return a scale factor for converting from units to pixels
docstr_tok: ["Return","a","scale","factor","for","converting","from","units","to","pixels"]
code: def _dots_per_unit(self, units):
      """
      Return a scale factor for converting from units to pixels
      """
      ax = self.ax
      if units in ("x", "y", "xy"):
          if units == "x":
              dx0 = ax.viewLim.width
              dx1 = ax.bbox.width
          elif units == "y":
              dx0 = ax.viewLim.height
              dx1 = ax.bbox.height
          else:  # 'xy' is assumed
              dxx0 = ax.viewLim.width
              dxx1 = ax.bbox.width
              dyy0 = ax.viewLim.height
              dyy1 = ax.bbox.height
              dx1 = np.hypot(dxx1, dyy1)
              dx0 = np.hypot(dxx0, dyy0)
          dx = dx1 / dx0
      else:
          if units == "width":
              dx = ax.bbox.width
          elif units == "height":
              dx = ax.bbox.height
          elif units == "dots":
              dx = 1.0
          elif units == "inches":
              dx = ax.figure.dpi
          else:
              raise ValueError("unrecognized units")
      return dx
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import six
  import math
  import weakref
  import numpy
  from numpy import ma
  import matplotlib.collections
  import matplotlib.transforms
  import matplotlib.text
  import matplotlib.artist
  from matplotlib.artist import allow_rasterization
  from matplotlib import docstring
  import matplotlib.font_manager
  from matplotlib.cbook import delete_masked_points
  from matplotlib.patches import CirclePolygon
label_desc: Use image node_id 7 for calling the Quiver obj's underlying member method code with example usage: obj._dots_per_unit(units) and returns: dx