<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def quiver( x, y, z, u, v, w, size=default_size * 10, size_selected=default_size_selected * 10, color=default_color, color_selected=default_color_selected, marker="arrow", **kwargs ):
 """Create a quiver plot, which is like a scatter plot but with arrows pointing in the direction given by u, v and w. :param x: {x} :param y: {y} :param z: {z} :param u: {u_dir} :param v: {v_dir} :param w: {w_dir} :param size: {size} :param size_selected: like size, but for selected glyphs :param color: {color} :param color_selected: like color, but for selected glyphs :param marker: (currently only 'arrow' would make sense) :param kwargs: extra arguments passed on to the Scatter constructor :return: :any:`Scatter` """

    fig = gcf()
    _grow_limits(x, y, z)
    if 'vx' in kwargs or 'vy' in kwargs or 'vz' in kwargs:
        raise KeyError('Please use u, v, w instead of vx, vy, vz')
    s = ipv.Scatter(
        x=x,
        y=y,
        z=z,
        vx=u,
        vy=v,
        vz=w,
        color=color,
        size=size,
        color_selected=color_selected,
        size_selected=size_selected,
        geo=marker,
        **kwargs
    )
    fig.scatters = fig.scatters + [s]
    return s