title: Vary length of arrows in Matplotlib Axes3D.quiver plot
body: <p>Is there any way of varying the lengths of individual arrows in a quiver plot?</p>
  
  <p>I have created a plot using:</p>
  
  <pre><code>lines_to_draw = list of numpy 3d vectors
  xs, ys, zs    = list of coordinates
  us, vs, ws    = list of displacements
  
  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')
  for line in lines_to_draw:
      ax.plot(line[:,0], line[:,1], line[:,2], color='green'
  ax.quiver(xs, ys, zs, us, vs, ws)
  </code></pre>
  
  <p>It looks like this (axes turned off):
  <img src="https://i.stack.imgur.com/uZYJv.png" alt="Quiver plot"></p>
  
  <p>The problem is that all the arrows look to be the same magnitude. The docs suggest that this is probably the case (specifically the <code>length</code> argument):</p>
  
  <blockquote>
    <p>Axes3D.quiver(*args, **kwargs)
    Plot a 3D field of arrows.</p>
    
    <p>call signatures:</p>
    
    <p>quiver(X, Y, Z, U, V, W, **kwargs) Arguments:</p>
    
    <p>X, Y, Z: The x, y and z coordinates of the arrow locations </p>
    
    <p>U, V, W: The direction vector that the arrow is pointing The arguments could be
    array-like or scalars, so long as they they can be broadcast together.
    The arguments can also be masked arrays. If an element in any of
    argument is masked, then that corresponding quiver element will not be
    plotted.</p>
    
    <p>Keyword arguments:</p>
    
    <p>length: [1.0 | float] The length of each quiver, default to 1.0, the
    unit is the same with the axes</p>
    
    <p>arrow_length_ratio: [0.3 | float] The
    ratio of the arrow head with respect to the quiver, default to 0.3 Any
    additional keyword arguments are delegated to LineCollection</p>
  </blockquote>
  
  <p>Just for clarification, the magnitude of the vectors differs by up to a factor of 30. So there should be a very visible difference.</p>